文章目录
- 15-4 Web 企业微信实战1
- selenium简介
- selenium 架构
- 分析报错信息
- Selenium ide
- 插件下载
- 录制自动化脚本
- 环境配置
- 下载浏览器对应的driver版本
- 配置环境变量
- 复用浏览器
- 复用已有浏览器(调试)
- cookie登录
- 获取cookie,序列化后存入yaml文件内
- 使用序列化cookie的方法进行登录
- 15-2 Web 企业微信实战2
- 大纲
- 官网链接
- PO设计思想
- 实战练习
- PO六大原则
- 作业
15-4 Web 企业微信实战1
课程贴:https://ceshiren/t/topic/11708/8
selenium简介
- Selenium is a suite of tools to automate web browsers across many platforms.
- runs in many browsers and operating systems
- can be controlled by many programming languages and testing frameworks
selenium 架构
官网:
https://www.selenium.dev/selenium/docs/api/py/
https://www.selenium.dev/
分析报错信息
学会找报错信息,以及理解报错信息的含义
1、从后往前看,找到最后的几个E
2、找到 【当前文件名:行号】 ,点到代码中,分析是否由于书写问题,定位的问题…
Selenium ide
插件下载
Chrome:在Chrome搜索selenium ide 下载即可
离线插件下载:
链接:https://pan.baidu/s/1UceWas3jQJxXWnRTVJCGjA
密码:mf9t
firefox:Selenium IDE – 下载 🦊 Firefox 扩展(zh-CN)
录制自动化脚本
环境配置
下载浏览器对应的driver版本
chromedriver下载地址与webview自动化关键代码
配置环境变量
Windows:
Mac:
vim ~/.bash_profile
export PATH=$PATH:[chromedriver所在路径]
注意事项:
- Windows配置完成后,一定要重启cmd、pycharm
- mac配置完成后,需要重新加载环境变量 source ~/.bash_profile
参考地址:Selenium环境安装配置
-
查看环境变量是否生效 Windows
-
查看环境变量是否生效 Mac
复用浏览器
1. 需要退出当前所有的谷歌浏览器(特别注意)
2. 找到chrome的启动路径(下一页ppt)
3. 配置环境变量(下一页ppt)
4. 启动命令
windows:chrome --remote-debugging-port=9222
mac:Google\ Chrome --remote-debugging-port=9222
chrome_arg=webdriver.ChromeOptions()
chrome_arg.debugger_address=’127.0.0.1:9222’
self.driver = webdriver.Chrome(options=chrome_arg)
复用已有浏览器(调试)
-
chrome启动路径-windows
-
chrome启动命令
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome - -remote-debugging-port=9222 注意:使用tab键,不要手动输入 启动命令windows:chrome --remote-debugging-port=9222 启动命令mac:Google\ Chrome --remote-debugging-port=9222
cookie登录
- Cookie 是一些数据, 存储于你电脑上的文本文件中
- 当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息
- Cookie 解决“如何记录客户端的用户信息”
获取cookie,序列化后存入yaml文件内
def test_get_cookie():
opt = webdriver.ChromeOptions()
# 设置debug地址
opt.debugger_address = "127.0.0.1:9222"
driver = webdriver.Chrome(options=opt)
driver.implicitly_wait(5)
driver.get("https://work.weixin.qq/wework_admin/frame#contacts")
cookie = driver.get_cookies()
print(cookie)
with open("data.yaml","w",encoding="UTF-8") as f:
yaml.dump(cookie,f)
使用序列化cookie的方法进行登录
def test_login():
driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get("https://work.weixin.qq/wework_admin/loginpage_wx?")
with open("data.yaml",encoding="UTF-8") as f:
yaml_data = yaml.safe_load(f)
for cookie in yaml_data:
driver.add_cookie(cookie)
driver.get("https://work.weixin.qq/wework_admin/frame#index")
time.sleep(10)
15-2 Web 企业微信实战2
- 课程贴:https://ceshiren/t/topic/11815
- 课堂源码链接:https://github/ceshiren/HogwartsFIS04
大纲
- selenium PO设计模式核心思想
- selenium PO设计模式六大原则
- selenium PO设计模式实战练习
22种代码异味
官网链接
selenium 官方网站:
PO设计模式 :: Selenium 文档
马丁福勒个人博客
https://martinfowler/bliki/PageObject.html
PO设计思想
实战练习
代码示例
def test_login():
opt = webdriver.ChromeOptions()
opt.debugger_address = "127.0.0.1:9222"
driver = webdriver.Chrome(options=opt)
driver.implicitly_wait(10)
driver.get("https://work.weixin.qq/wework_admin/frame")
driver.find_element_by_id("menu_contacts").click()
ele = (By.CSS_SELECTOR, ".ww_operationBar .js_add_member")
# 显示等待,等待元素是可点击状态
WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable(ele))
# 解决点击无效问题;设置死循环多次点击,直到目标元素出现后,跳出死循环
while True:
driver.find_element(*ele).click()
element = driver.find_elements_by_id("username")
if len(element) > 0:
break
driver.find_element_by_id("username").send_keys("5151155")
driver.find_element_by_id("memberAdd_acctid").send_keys("xx151utuds")
driver.find_element_by_id("memberAdd_mail").send_keys("s1sa51t1d@qq")
driver.find_element_by_css_selector(".js_btn_save").click()
time.sleep(1)
eles = driver.find_elements_by_css_selector(".member_colRight_memberTable_td:nth-child(2)")
name_list = []
for value in eles:
# 获取元素属性title的值,存入list内
print(value.get_attribute("title"))
name_list.append(value.get_attribute("title"))
# 断言目标名字是否在列表内
assert "5151155" in name_list
print(name_list)
PO六大原则
作业
使用PO设计模式编写添加成员自动化测试用例(首页-通讯录-添加成员-断言;首页-添加成员-断言)
更多推荐
15 Web自动化测试实战
发布评论