0


selenium常见异常以及处理方法

python常见异常以及处理方法

.
.

一、 TypeError: ‘module’ object is not callable

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

二、“chromedriver” executable needs to be in path

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

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

三、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、元素被遮挡了,点击一下旁边的不会产生事件的元素,取消遮挡。

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

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

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

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

六、找不到元素,NoSuchElement

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

七、 pycharm 导入selenium报错

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

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

八、驱动与浏览器不匹配

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

九、驱动被防火墙拦截

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

十、连接不上 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。

十一、远程服务器异常

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

十二、各种找不到

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

十三、元素操作异常

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:鼠标事件移动的位置不合适
    解决:通常结合页面当前状态,换个位置即可。
标签: selenium python chrome

本文转载自: https://blog.csdn.net/weixin_44801980/article/details/125455731
版权归原作者 卢同学. 所有, 如有侵权,请联系我们删除。

“selenium常见异常以及处理方法”的评论:

还没有评论