标题
web 企业微信实战(一)
课程价值
- 了解 selenium IDE
- 掌握使用remote复用已有的浏览器
- 掌握使用cookie登陆
大纲
- selenium简介
- selenium IDE
- 使用remote复用已有的浏览器
- 使用cookie登陆
时长
90分钟
PPT
脚本编写
应用
参考链接
https://www.selenium.dev/selenium/docs/api/py/
https://www.selenium.dev/
不建议使用 selenium IDE
- 生成大量冗余代码,比如导入,滑入,滑出等等
- 实现复杂的业务逻辑,比如 加入if,else 逻辑处理,不方便
- 录制出来的用例不够完整, 没有断言
复用浏览器操作
- 浏览器
-
- 需要退出当前所有的谷歌浏览器(特别注意)
-
- 找到chrome的启动路径(下一页ppt)
-
- 配置环境变量(下一页ppt)
-
- 启动命令windows:chrome --remote-debugging-port=9222
- 启动命令mac:Google\ Chrome --remote-debugging-port=9222
-
- 访问http://localhost:9222/
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome - -remote-debugging-port=9222
注意:使用tab键,不要手动输入
参考代码
https://github.com/ceshiren/HogwartsLG4
作业
- 使用 cookie 登录企业微信,完成添加联系人,加上断言验证
课后反馈调查表
zhuozx
(zhuozx)
7
1 个赞
老师,请教个关于chrome复用的问题:
chrome复用的时候,为什么第一次能够获取到元素,第二次之后却获取不到呢?
代码如下:
- 执行代码,pass
- 再次执行相同的代码,fail
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
class TestWechat1:
def setup(self):
# 配置debug接口
option = Options()
option.debugger_address = "localhost:9222"
self.driver = webdriver.Chrome(options=option)
# 登录到企业微信
self.driver.get("https://work.weixin.qq.com/wework_admin/frame#contacts")
# 隐式等待
self.driver.implicitly_wait(5)
def teardown(self):
pass
def test_debug(self):
self.driver.find_elements(By.CSS_SELECTOR, ".js_add_member")[1].click()
报错信息:
def test_debug(self):
> self.driver.find_elements(By.CSS_SELECTOR, ".js_add_member")[1].click()
E IndexError: list index out of range
perfect
(追梦者)
14
再次执行的时候,是不是页面不是初始页面了?需要重新启动。这时你用get方法打开一个新的页面,这个页面在正在打开的过程中,你去查找元素,有个时间差,一般是找不到的, 所以在加上等待。你加了隐式等待,不过加的位置 不对。应该在实例化driver之后,get()方法之前加。
页面还是之前打卡的目录,比如我这里是企业微信的通讯录页面。
我看到每次跑的时候,会刷新一次,不过还是在企业微信通讯录页面
每次跑之前,都需要在cmd中重新启动chrome吗?