标题
web 企业微信实战(一)
课程价值
- 了解 selenium IDE
- 掌握使用remote复用已有的浏览器
- 掌握使用cookie登陆
大纲
- selenium简介
- selenium IDE
- 使用remote复用已有的浏览器
- 使用cookie登陆
时长
90分钟
PPT
https://pdf.ceshiren.com/lg3/selenium%20企业微信1/assets/player/KeynoteDHTMLPlayer.html#0
脚本编写
应用
常见问题
driver 常见问题
- chromedriver的配置问题。
- 下载浏览器对应的driver版本,chromedriver 配置环境变量
- 配置完环境变量打印一下 PATH
- 重启命令行以及 pycharm
报错如何查看
1、从后往前,找到最后一行的E ,对应的报错信息
2、找到你的【文件名 :行号】 ,如果有多行调用,找到最后被调用的那一行代码,提示的错误信息。
断言
1、每条测试用例必须要加入断言
2、适当的加入一些断言在测试用例中,一般最后一个操作步骤 ,必须要加入验证点
3、如果发生了页面的切换,通过页面标题,查找上下页面不同的元素来进行判断
4、页面切换,
参考链接
selenium 官网:https://www.selenium.dev/
selenium python document: https://seleniumhq.github.io/selenium/docs/api/py/
复用浏览器
配置
-
windows
windows 启动:
chrome --remote-debugging-port=9222
mac 启动:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
-
配置
- 浏览器
-
- 需要退出当前所有的谷歌浏览器(特别注意)
-
- 找到chrome的启动路径(下一页ppt)
-
- 配置环境变量(下一页ppt)
-
- 启动命令windows:chrome --remote-debugging-port=9222
- 启动命令mac:Google\ Chrome --remote-debugging-port=9222
复用浏览器
代码参考:
def test_cookie(self):
# cookies = self.driver.get_cookies()
# print(cookies)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
cookies = [{'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.vid', 'path': '/', 'secure': False, 'value': '1688851905935585'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.vid', 'path': '/', 'secure': False, 'value': '1688851905935585'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wxpay.corpid', 'path': '/', 'secure': False, 'value': '1970325054155915'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.sid', 'path': '/', 'secure': False, 'value': 'IiwmHmbRQC3UgqmekvGcsqjGsmhinLGD1Fs6VM0ep4c-M62KyX1xelNQQwT2FXMJ'}, {'domain': '.work.weixin.qq.com', 'httpOnly': False, 'name': 'wwrtx.d2st', 'path': '/', 'secure': False, 'value': 'a9827484'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.vst', 'path': '/', 'secure': False, 'value': 'IpjrSY68ghhDpX4Y2TYQtR0gQBpKDwr0IA3kDr_2PW_SH1JzxTin6morWg745a7hV5ThIi3ZG4Hhp-W9YilT-VRrQVkGREEkKhuW00BzYAfpPWRx8HoV-g345wlilRNN-RpL-RnWeoAPjXYiIQbSodU2kAKb53UdYWzSWqSxA4YpSFPLKh0gpgn6BnlBhwwF58ZeWw1hcUhGCho1lW7RfJYFCA19P5xbDOIihF8BW5OHKEGsXsqXXdlGrl2u8nPS8VD6EkDokIO525jdTelX_w'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ltype', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.qq.com', 'expiry': 2147385600.31143141, 'httpOnly': False, 'name': 'pgv_pvid', 'path': '/', 'secure': False, 'value': '8764122590'}, {'domain': '.work.weixin.qq.com', 'expiry': 1629268354, 'httpOnly': False, 'name': 'Hm_lvt_9364e629af24cb52acc78b43e8c9f77d', 'path': '/', 'secure': False, 'value': '1595508672,1597647639,1597674494,1597732354'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.ref', 'path': '/', 'secure': False, 'value': 'direct'}, {'domain': '.work.weixin.qq.com', 'httpOnly': True, 'name': 'wwrtx.refid', 'path': '/', 'secure': False, 'value': '95284373277283'}, {'domain': '.qq.com', 'expiry': 1597842202, 'httpOnly': False, 'name': '_gid', 'path': '/', 'secure': False, 'value': 'GA1.2.1667856325.1597673798'}, {'domain': 'work.weixin.qq.com', 'expiry': 1597763889, 'httpOnly': True, 'name': 'ww_rtkey', 'path': '/', 'secure': False, 'value': '81hlu2n'}, {'domain': '.qq.com', 'expiry': 1597755862, 'httpOnly': False, 'name': '_gat', 'path': '/', 'secure': False, 'value': '1'}, {'domain': '.qq.com', 'expiry': 2147385600, 'httpOnly': False, 'name': 'pgv_pvi', 'path': '/', 'secure': False, 'value': '7102834688'}, {'domain': '.qq.com', 'expiry': 1913072077, 'httpOnly': False, 'name': 'tvfe_boss_uuid', 'path': '/', 'secure': False, 'value': '1cebc3be69544fcc'}, {'domain': '.work.weixin.qq.com', 'expiry': 1600347808, 'httpOnly': False, 'name': 'wwrtx.i18n_lan', 'path': '/', 'secure': False, 'value': 'en-us%2Cen'}, {'domain': '.qq.com', 'expiry': 1660827802, 'httpOnly': False, 'name': '_ga', 'path': '/', 'secure': False, 'value': 'GA1.2.2051744024.1597673798'}, {'domain': '.work.weixin.qq.com', 'expiry': 1629209796, 'httpOnly': False, 'name': 'wwrtx.c_gdpr', 'path': '/', 'secure': False, 'value': '0'}]
for cookie in cookies:
if 'expiry' in cookie.keys():
cookie.pop('expiry')
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
self.driver.find_element(By.ID, "menu_contacts").click()
def test_cookie1(self):
# Shelve 小型的数据库, 对象持久化保存方法,
db = shelve.open("mydb/logincookies")
cookies = db['cookie']
db.close()
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
for cookie in cookies:
if 'expiry' in cookie.keys():
cookie.pop('expiry')
self.driver.add_cookie(cookie)
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#index")
self.driver.find_element(By.ID, "menu_contacts").click()
作业
- 使用cookie 登录企业微信,完成导入联系人,加上断言验证