zoukankan      html  css  js  c++  java
  • selenium 一些事儿

    1、报错:Can not connect to the Service chromedriver

    项目之前运行一直没有问题,今天运行突然报错,本来以为是chrome不小心更新了导致chromedriver匹配不上,但是最后发现是 localhost配置错了

    localhost如下配置即可

    2、find_element方法底层,id/name/tag_name/class_name都是基于 CSS 定位的

    如果通过find_element找到了多个元素,也会默认找第一个

    国内CSS:https://www.w3school.com.cn//cssref/css_selectors.asp

    3、隐式等待、显式等待

    隐式等待,就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。

    显示等待,就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,如果在规定的时间没有等到 ,就报错。

        def setup_method(self):
            self.driver = webdriver.Chrome()
            self.driver.get("https://testerhome.com/")
            # todo:隐式等待5s,超过则报错
            self.driver.implicitly_wait(5)
    # todo:显式等待
            # sleep(2)
            element = (By.PARTIAL_LINK_TEXT, '霍格沃兹测试学院')
            WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(element))
            self.driver.find_element(*element).click()

    4、【跳过登录流程,进行UI自动化】

    本地指定ip 端口打开浏览器(前提:一定要关闭当前浏览器)

    /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --remote-debugging-port=9222

     正常的话,执行完命令会显示

    如果没有红框,可以执行命令 netstat -p tcp -an | grep 9222,查看是否有9222的进程,没有的话,再次关闭所有浏览器,然后重新执行第一条命令

    这样在selenium中代码,可以直接在当前打开的浏览器中 继续打开页面进行UI自动化,这种方法可以跳过某些需要登录才能操作的网站

    我们可以在这个9222打开的浏览器,提前登录成功,然后进行UI自动化,这样可以避免登录

    options = webdriver.ChromeOptions()
    options.debugger_address = "127.0.0.1:9222"
    self.driver = webdriver.Chrome(options=options)
    self.driver.get("https://testerhome.com/")

    5、元素定位,优先使用name

    原因:name是要传给服务端的,前端不会随意更改的,如果改了,服务端也要改,使用name 定位更好的判断代码是否有问题 

    而id 只要确保不唯一就可以

    6、chromedriver 下载解压后 ,放到  usr/local/bin下【MAC】 

  • 相关阅读:
    ----vue中使用高德地图实现搜索地址----
    ----vue中实现上传文件给后台----
    ----Vue 中mixin 的用法详解----
    ----移动端移动端调试神器vConsole----
    ----微信公众号之实现图片裁剪并上传----
    ----解决input输入框type=number时候去除增减按钮 禁用滚轮事件----
    ----微信公众号之解决二次分享问题----
    ----微信公众号之授权----
    「Linux学习」之clone表达式及grep 用法补充
    「Linux学习」之tar命令用法
  • 原文地址:https://www.cnblogs.com/lwj-0923/p/12515978.html
Copyright © 2011-2022 走看看