复用浏览器
步骤
- 打开chrome-属性-找到安装路径,配置环境变量;
- 命令行输入:chrome --remote-debugging-port=9222,启动浏览器(注意,之前所有浏览器进程都需要关闭)
- 脚本中添加以下demo:
def setup_method(self, method):
options = Options()
options.debugger_address = "127.0.0.1:9222"
self.driver = webdriver.Chrome(options=options)
self.driver.get("需要打开的网址")
Cookies
主要作用
绕过登录的操作,可以使用cookies或者复用浏览器
实现方法
self.driver.get_cookies() 获取当前页面的cookies
self.driver.add_cookie(cookie) 给当前页面注入cookie
注意:都需要提前打开页面
self.driver.refresh() 刷新页面
存储
shelve:内置模块,专门对数据进行持久化存储,相当于小型的数据库。
### 生成cookies的db文件
cookies = []
db = shelve.open("cookies")
db['cookie'] = cookies
db.close()
self.driver.get("网址")
for cookie in cookies:
self.driver.add_cookie(cookie) # 注入cookies
self.driver.refresh() # 刷新页面
### 使用生成的db文件
db = shelve.open("cookies")
cookies = db['cookie']
db.close()
self.driver.get("网址")
for cookie in cookies:
self.driver.add_cookie(cookie) # 注入cookies
self.driver.refresh() # 刷新页面
PageObject(PO)
将具体实现细节封装在函数中,对外只提供接口。实现细节与断言分开。对公共部分可以进行复用。
原则
- 公共方法,比如对页面上的点击、输入等可以封装为方法。
- 方法中不要添加断言。
- 不要暴露细节。
- 通过return返回其它页面。
- 不要封装整个页面,只对其常使用到的、重要内容进行封装。
- 相同的动作导致不同的结果,需对其封装不同的方法,例如登录成功与失败,应封装为2个方法。
使用范围
UI类的测试,对每个页面进行封装
对企业微信进行测试
- 首页:登录;注册
- 登录:扫码;注册;进入注册页
- 注册:注册信息
小技巧
格式化代码:ctrl+alt+l