1.为什么需要做UI自动化
UI是最接近用户的,直面用户体验
2.什么时候需要进行UI自动化
- 涉及用户体验相关的主要业务逻辑
- 业务模块版本趋于稳定
3.原理
使用Selenium实现自动化测试,主要需要3个东西
- 1.自动化测试代码:自动化测试代码发送请求给浏览器的驱动;
- 其二便是浏览器的驱动:每个浏览器都有自己的驱动,比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe,它来解析这些自动化测试的代码,解析后把它们发送给浏览器;
- 其三便是浏览器:执行浏览器驱动发来的指令,并最终完成操作
4.复用浏览器
1)使用场景
- 自动化过程中,一定要人为的介入场景
- 编写脚本过程中,进行debug
2).复用已有浏览器-配置步骤
- 1.需要退出当前所有的chrome浏览器(特别注意)
- 2.找到chrome的启动路径
- 3.配置环境变量
- 4.启动命令
Windows:Chrome --remote-debugging-port=9222
mac:Google\Chrome --remote-debugging-port=9222
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class Testlogin:
def test_remote_chrome(self):
"""
使用浏览器复用的方式登录企业微信
:return:
"""
#实例化options
option = Options()
#设定chrome debug 模式的一个地址
#地址需要写入刚刚启动命令的端口号
option.debugger_address = "localhost:9222"
#实例化一个driver,driver中设定刚刚的debuggeraddress属性
self.driver = webdriver.Chrome(options=option)
self.driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx")
sleep(3)
#手动扫码登录成功后,点击"添加成员"
self.driver.find_element_by_css_selector(".ww_indexImg_AddMember").click()
6.cookie登录
get_cookies()和add_cookie()
1)cookie是什么?
- cookie是一些数据,存储于你电脑上的文本文件中
- 当web服务器向浏览器发送web页面时,在连接关闭后,服务端不会记录用户信息
2)使用场景
扫码登录等无法自动化登录的场景
3)步骤
- 打开浏览器,扫码登录
- 登录成功后,通过get_cookies获取cookie
- 检查本地文件是否已经获取成功
- 再次打开浏览器,直接进入主页
- 可以跳过扫码步骤
from time import sleep from ruamel import yaml from selenium import webdriver from selenium.webdriver.chrome.options import Options class Testlogin: def test_remote_chrome(self): """ 使用浏览器复用的方式获取cookie :return: """ #实例化options option = Options() #设定chrome debug 模式的一个地址 #地址需要写入刚刚启动命令的端口号 option.debugger_address = "localhost:9222" #实例化一个driver,driver中设定刚刚的debuggeraddress属性 self.driver = webdriver.Chrome(options=option) self.driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx") sleep(3) #注意登录成功后获取cookie cookie_var = self.driver.get_cookies() print(cookie_var) #把cookie存入一个可以持久存储的地方,不要因为程序结束,而cookie变量不能使用 yaml.safe_dump(cookie_var, open("cookie.yaml", mode="w", encoding="utf-8")) def test_get_cookie(self): #不使用复用浏览器的方式获取cookie self.driver = webdriver.Chrome() #进入页面 self.driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx") #等待15秒,这个过程需要把扫码登录地址完成 sleep(15) #注意登录成功后获取cookie cookie_var = self.driver.get_cookies() print(cookie_var) #把cookie存入一个可以持久存储的地方,不要因为程序结束,而cookie变量不能使用 yaml.safe_dump(cookie_var, open("cookie.yaml", mode="w", encoding="utf-8")) def test_cookie_login(self): #1.拿到cookie数据 cookie_var = yaml.safe_load(open("cookie.yaml", encoding="utf-8")) print(cookie_var) #2.需要打开浏览器,输入地址 self.driver = webdriver.Chrome() self.driver.get("https://work.weixin.qq.com/wework_admin/frame") #3.将cookie写入浏览器中 for cookie in cookie_var: #add_cookie只支持传入单个字典,所以我们需要循环调用,植入cookie self.driver.add_cookie(cookie) sleep(5) #4.登录成功后需要刷新下页面 self.driver.get("https://work.weixin.qq.com/wework_admin/frame")