当前位置:   article > 正文

selenium常见异常以及处理方法_selenium报错

selenium报错

python常见异常以及处理方法

.
.

一、 TypeError: ‘module’ object is not callable

代码:driver = webdriver.chrome()
异常:TypeError: 'module' object is not callable
解决:谷歌浏览器首字母 C 大写,即:driver = webdriver.Chrome()
  • 1
  • 2
  • 3

二、“chromedriver” executable needs to be in path

原因:没有 Chrome 驱动
解决:需下载驱动添加到环境变量;如果已下载,需指明驱动路径。

	如果还是报错:
    1、在代码中添加路径,指明路径。
    2、指明路径还报错,检查下自己的驱动版本。
    3、如果添加路径,不报错,证明环境变量有问题。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

三、selenium 点击元素报错 ElementClick

问题:明明定位成功,但是点击就是报错。
原因:元素被其他控件遮挡了。
解决:
1、用 js 去点击。
    ele = driver.find_element_by_id(表达式)
    driver.execute_script("argument[0].click;", ele)

2、用鼠标事件去点击。
    ele = driver.find_element_by_id(表达式)
    webdriver.ActionChains(driver).move_to_element(ele).click(ele).perform()

3、元素被遮挡了,点击一下旁边的不会产生事件的元素,取消遮挡。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

四、selenium 使用 clear 无法清除文本框内容
WEB自动化_键盘事件

问题:清除文本框内容之后,文本框内容又被自动填充了。
解决:键盘事件,先全选文本框内容,再删除键,即可清除。
  • 1
  • 2

五、下拉框是 input 封装的,无法操作
WEB自动化_文件上传(input 标签和非input 标签)

解决:先定位到 input,然后输入内容,通过键盘事件,选择下拉框内容。
ele = driver.find_element_by_id(表达式)
ele.send_keys(Keys.DOWN)
ele.send_keys(Keys.ENTER)
  • 1
  • 2
  • 3
  • 4

六、找不到元素,NoSuchElement

原因:
    1、之前的操作导致界面变化,元素定位表达式失效,定位失败。
        也有可能是上一步操作异常,而上一步操作正是进入新页面的,所以没有进入新页面。
    2、元素未加载就定位。
    3、内嵌网页。
    4、多标签页。
解决:        
	1、重新定位,使操作元素的时候,使用的表达式与页面变化后的一致, 解决上一步的异常。
    2、等待。若元素未加载,则使用显示等待。若是浏览器反应过慢,则sleep。
    3、切换到内嵌网页。
    4、切换到对应的标签页。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

七、 pycharm 导入selenium报错

原因:pycharm的虚拟环境没有安装selenium。
解决:在 pycharm 中通过设置重新安装selenium。

原因:当前项目下,有selenium.py 或名为 selenium的文件夹,导致与系统包名冲突。
解决:禁止使用关键字为自己的问、项目、变量命名。
  • 1
  • 2
  • 3
  • 4
  • 5

八、驱动与浏览器不匹配

问题:SessionCreatedException ....... Chrome version 73
解决:查看本地驱动版本,下载对应的 chromedriver。
  • 1
  • 2

九、驱动被防火墙拦截

问题:WebDriverException:Message:Can not connect to the Service chromedriver.exe
原因:驱动被防火墙拦截。
解决:设置防火墙允许。
  • 1
  • 2
  • 3

十、连接不上 chromedriver 服务

问题:WebDriverException:Message:Can not connect to the Service chromedriver
原因:代码通过 127.0.0.1 这个ip 访问 chromedriver 服务,hosts文件没有配置127.0.0.1指向localhost。
解决:配置本地hosts文件,添加 127.0.0.1 localhost。
  • 1
  • 2
  • 3

十一、远程服务器异常

问题:RemoteDriverServerException
原因:当浏览器功能错误组合/字段 导致服务器不发送响应。
解决:检查远程 webdriver服务。
  • 1
  • 2
  • 3

十二、各种找不到

1、NoSuchElementException:找不到元素。
2、NoSuchAttributeException:元素没有这个属性,确认定位到的元素是否具备目标属性,或检查一下单词拼写。
3、NoAlertPresentException:没有找到 alert 弹窗,观察页面,查看是否有弹窗出现,或加上等待。
4、NoSuchFrameException:没有找到内嵌网页,检查元素定位、或者单词拼写。
5、NoSuchWindowException:没找到窗口,窗口是不是被提前关闭了,或者检查单词拼写、列表索引、或判断条件。
6、TimeOutException:在显示等待,或隐式等待中,查找元素超时,也就是找不到元素。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

十三、元素操作异常

1、ElementNotVisibleException:元素不可见异常

	原因:selenium不能操作隐藏元素
	1、可能元素在某操作后需要反应一下,才会从隐藏状态变为可见。
	解决:可用 sleep 等待。
	2、可能元素需要某些步骤之后,才会出现。
	解决:去执行这些步骤。
	3、如果一定要操作隐藏元素,可用 js 语法移出元素的不可见属性。
	(style=“display:none”)
	    document.querySelector("li[class='b_ans b_top b_topborder']").removeAttribute("h")
	    表达式写 css 表达式定位


2、StaleElementException: 陈旧的元素引用异常
	原因:页面刷新了,或页面跳转之后,使用了之前定位的元素。
    解决:重新定位元素并操作


3、InvalidElementStateException:元素状态异常
	原因:元素只读、不可点击等。
	解决:等待或使用js移出影响属性。


4、ElementNotSelectableException:元素不可被选中
    确认标签是 select


5、MoveTargetOutOfBoundsException:鼠标事件移动的位置不合适
	解决:通常结合页面当前状态,换个位置即可。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/177920?site
推荐阅读
相关标签
  

闽ICP备14008679号