• 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
  • 相关阅读:
    LLVM系列:1.设计思想和LLVM IR简介
    Elasticsearch:从 Elastic Stack 中的时间戳谈开去
    【逗老师的无线电】Debian Linux手工编译安装MMDVM
    “蔚来杯“2022牛客暑期多校训练营1,签到题GADI
    【YOLOv5/v7改进系列】引入特征融合网络——ASFYOLO
    红黑树2——怎么画红黑树
    MySQl表的增删查改(CRUD)
    【顺序表和链表】
    OpenCV使用教程-图像边界填充
    unity 协程
  • 原文地址:https://blog.csdn.net/weixin_44801980/article/details/125455731