• selenium常见报错及解决方案


    一、TypeError:‘module’ object is not callable

      

      解决方案:谷歌浏览器Chrome单词C大写,修改为webdriver.Chrome()

     二、'chromedriver' executable needs to be in PATH.

      问题原因:没有chrome驱动,需要先下载chrome驱动,然后添加到环境变量中

       解决方案:

      1、访问http://chromedriver.storage.googleapis.com/index.html,找到自己浏览器对应版本的chromedriver.exe下载(版本一定要下载对

      2、下载下来的文件解压后放在chrome浏览器所在目录

     

      3、添加环境变量到PATH

     

    注意:如果还是运行报错,就在代码中添加chromeDriver的路径来检测下版本是否正确:  

       如果直接添加路径还报错,就是驱动版本没下载对;如果直接添加路径正确,说明环境变量没配置对

    from selenium import webdriver
    
    url = "http://www.baidu.com"
    browser = webdriver.Chrome(executable_path="C:\Users\12717\AppData\Local\Google\Chrome\Application\chromedriver.exe")
    browser.get(url)

     4、Selenium定位到元素点击却报错:ElementClickInterceptedException:element click intercepted

      网上搜索到了2种方式,我用第一种方式解决了

      方式一:

      element = driver.find_element_by_xpath("表达式")

      driver.execute_script("arguments[0].click();", element)

      方式二:

      element = driver.find_element_by_xpath('表达式')

      webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()

    element = self.driver.find_element_by_xpath(//button[@data-test-id="add"])
    driver.execute_script("arguments[0].click();", element)
    

    5、selenium使用clear()函数无法清空输入框的内容

      使用.clear()无法清空输入框的内容

      正常是我们在清除文本框内容的时候,都会使用 clear() 函数进行清除,但是有时候会出现,清除完成后再点击查询时,文本框的内容会再次自动填充,这个时候我们可以选择以下方式:

      #清空查询条件
      driver.find_element_by_id("FORM_NAME").send_keys(Keys.CONTROL, "a")
      driver.find_element_by_id("FORM_NAME").send_keys(Keys.DELETE)
      全选文本框内容,然后输入删除按键,问题解决!

    6、下拉框是input封装的,下拉框内容无法定位

      解决方案:先定位到input,然后输入内容,通过操作键盘键选择下拉框内容。

            element = self.driver.find_element_by_xpath(position)
            element.send_keys(Keys.CONTROL, 'a')
            element.send_keys(text)                          # 输入内容
            element.send_keys(Keys.DOWN)               # 键盘下键
            element.send_keys(Keys.ENTER)               # enter键    

    7、测试用例第一条总是执行失败

      原因:登陆页面和测试页面之间未设置延迟;

      解决方案:在打开登陆页面之后设置一个延迟,再打开测试页面

  • 相关阅读:
    Windows下的符号链接
    简单谈谈存储器的容量缩水问题
    配置CKEditor和CKFinder
    CKFinder的水印控件的问题
    关于 Visual Studio 默认创建的不是公共类
    Symbian 60 按键以及对应的键值(图)
    PLC中存储器的数据类型与寻址方式
    S7200 寻址
    电工识图笔记
    S7200型号串口通信参数设置
  • 原文地址:https://www.cnblogs.com/Clairewang/p/12666845.html
Copyright © 2020-2023  润新知