9-常见异常

1、TypeError: ‘module’ object is not callable

原因: 浏览器首字母小写了,需要改为大写,如driver = webdriver.Firefox()

2、“chromedriver” executable needs to be in path

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

如果还是报错:

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

3、点击元素报错:Element is not clickable

原因: 定位成功的前提下,可能是被其他控件遮盖

① 用 js 去点击

ele = driver.find_element_by_id(表达式)
driver.execute_script("$(arguments[0]).click()", ele)  
# 注:(arguments[0])就代表找到的ele元素

② 鼠标事件去点击

ele = driver.find_element_by_id(表达式)
webdriver.ActionChains(driver).move_to_element(ele).click(ele).perform()

③ 先点击一下旁边的不会产生事件的元素,取消遮挡,再点击目标元素

4、使用 clear 无法清除文本框内容

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

5、下拉框是 input 封装的,无法操作

解决: 先定位到 input,然后输入内容,通过键盘事件,选择下拉框内容

ele = driver.find_element_by_id(表达式)
ele.send_keys(Keys.DOWN)  # 向下
ele.send_keys(Keys.ENTER)  # 选中

6、找不到元素:NoSuchElement

可能的原因:

  • 界面变化,元素定位表达式失效,定位失败 (解决:重新定位)
  • 上一操作为进入新页面,但是操作错误,导致未进入到新页面 (解决:重新定位)
  • 从上一个页面成功进入,但未切换新页面 (解决:切换到对应标签页)
  • 元素未加载就定位 (解决:设置元素等待)
  • 内嵌网页 (解决:切换到对应内嵌页)

7、pycharm 导入selenium报错

可能的原因:

  • pycharm未安装selenium (解决:重新安装selenium)
  • 当前项目下,有selenium.py 或名为 selenium的文件夹,导致与系统包名冲突
    (解决:禁止使用关键字命名任何文件)

8、SessionCreatedException … Chrome version 73

原因: 驱动与浏览器不匹配
解决: 查看本地驱动版本,下载对应的 chromedriver

9、WebDriverException:Message:Can not connect to the Service chromedriver.exe

原因: 驱动被防火墙拦截
解决: 设置防火墙允许

10、WebDriverException:Message:Can not connect to the Service chromedriver

原因: 连接不上 chromedriver 服务。代码通过 127.0.0.1 这个ip 访问 chromedriver 服务,hosts文件没有配置127.0.0.1指向localhost
解决: 配置本地hosts文件,添加 127.0.0.1 localhost

11、RemoteDriverServerException

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

12、各种找不到

① NoSuchAttributeException

原因: 元素没有这个属性,确认定位到的元素是否具备目标属性,或检查一下单词拼写

② NoAlertPresentException

原因: 没有找到alert弹窗,观察页面,查看是否有弹窗出现,或加上等待

③ NoSuchFrameException

原因: 没有找到内嵌网页,检查元素定位、或者单词拼写

④ NoSuchWindowException

原因: 没找到窗口,窗口是不是被提前关闭了,或者检查单词拼写、列表索引、或判断条件

⑤ TimeOutException

原因: 在显示等待,或隐式等待中,查找元素超时,也就是找不到元素

13、元素操作异常

① ElementNotVisibleException

原因: 元素不可见异常,selenium不能操作隐藏元素
解决:

  • 尝试sleep一下,可能才会从隐藏状态变为可见
  • 检查是否需要某些操作后才会出现,如果是就去执行这些步骤
  • 用js 语法移出影响操作元素的属性
    如:document.querySelector(表达式).removeAttribute(属性)

② StaleElementException

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

③ InvalidElementStateException

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

④ ElementNotSelectableException

原因: 元素不可被选中,确认标签是否是 select

⑤ MoveTargetOutOfBoundsException

原因: 鼠标事件移动的位置不合适,通常结合页面当前状态,换个位置即可

猜你喜欢

转载自blog.csdn.net/weixin_45128456/article/details/113976872