【拉勾4期】web 企业微信实战(一)

标题

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 逻辑处理,不方便
  • 录制出来的用例不够完整, 没有断言

复用浏览器操作

  • 浏览器
    1. 需要退出当前所有的谷歌浏览器(特别注意)
    1. 找到chrome的启动路径(下一页ppt)
    1. 配置环境变量(下一页ppt)
    1. 启动命令windows:chrome --remote-debugging-port=9222
  • 启动命令mac:Google\ Chrome --remote-debugging-port=9222
    1. 访问http://localhost:9222/
  • windows 找到chrome 路径

  • windows环境变量配置

  • mac chrome 启动路径
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome - -remote-debugging-port=9222
注意:使用tab键,不要手动输入

参考代码

https://github.com/ceshiren/HogwartsLG4

作业

  • 使用 cookie 登录企业微信,完成添加联系人,加上断言验证

课后反馈调查表

https://github.com/zy-87/hogwarts_lg4/tree/master/web_selenium_1

https://github.com/astrid77/Hogwarts_Python_Practise/tree/master/selenium_wechat

web企业微信实战(一)作业–张涛

作业路径:

https://github.com/InsaneLoafer/HogwartsLG4_ZhangTao.git

结果截图:


https://github.com/Just-zhs
报告截图


https://github.com/dmingzhu/hogwarts_demo.git

https://github.com/zhuozx/pywork

1 个赞

https://github.com/LQZuan/Web_automation.git

https://github.com/chadleRui/python_game_practce

https://github.com/cuiqingliang/cql_horg.git

https://github.com/tangjy155/tangjyPro.git

运用PO的思想重构:
https://github.com/LQZuan/Web_automation.git

老师,请教个关于chrome复用的问题:
chrome复用的时候,为什么第一次能够获取到元素,第二次之后却获取不到呢?
代码如下:

  1. 执行代码,pass
  2. 再次执行相同的代码,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

作业
https://github.com/lzhhfh/hogwarts_lg4

再次执行的时候,是不是页面不是初始页面了?需要重新启动。这时你用get方法打开一个新的页面,这个页面在正在打开的过程中,你去查找元素,有个时间差,一般是找不到的, 所以在加上等待。你加了隐式等待,不过加的位置 不对。应该在实例化driver之后,get()方法之前加。

页面还是之前打卡的目录,比如我这里是企业微信的通讯录页面。
我看到每次跑的时候,会刷新一次,不过还是在企业微信通讯录页面

每次跑之前,都需要在cmd中重新启动chrome吗?

web企业微信实战(一)–彭可通
https://github.com/pengketong-pkt/pengketong_lg4/blob/master/learn_python/work_selenium/

https://github.com/zhousk/hogwarts/tree/master/my_selenium

cookies登录web端企业微信,添加联系人,加断言作业
https://github.com/xmy0501/homework/tree/master/web

https://github.com/zsjlu/hogwarts_robot/tree/master/homework/web/demo