Selenium Python 错误记录整理

1.selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted:
在这里插入图片描述
在这里插入图片描述
原因:元素定位相互覆盖
解决办法:

size_click=wd.find_element_by_css_selector(".el-form-item__content [class='el-button el-button--primary el-button--mini']")
wd.execute_script("arguments[0].click();", size_click)

2.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified
原因:无效选择器,指定了一个无效或非法的选择器

3.ElementNotInteractableException: Message: element not interactable
在这里插入图片描述
原因:需要定位的元素在页面中被隐藏了(例如:我定位的是删除图片按钮,该按钮被隐藏,只有当鼠标移动到该图片上方时,删除按钮才显示出来)
解决办法:添加鼠标悬浮定位功能
以百度首页为例,点击右上方“设置”菜单下的“搜索设置”(思路:先定位到“设置”,执行鼠标操作通过move_to_element将鼠标移到“设置”,再定位下拉菜单“搜索设置”并点击)

#!/usr/bin/python
# -*- coding: UTF-8 -*-

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# 打开浏览器
wd=webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')
wd.maximize_window()
wd.implicitly_wait(10)      # 设置最长等待时间,每隔半秒寻找一次,最长等待时间为10秒
# 调用WebDriver 对象的get方法 可以让浏览器打开指定网址
wd.get('https://www.baidu.com')

# 定位到设置
setting=wd.find_element_by_css_selector("[class='s-top-right-text c-font-normal c-color-t']")
# 鼠标移动到“设置”上面
ActionChains(wd).move_to_element(setting).perform()
# 定位到下拉菜单元素并点击
wd.find_element_by_css_selector("[class='s-user-setting-pfmenu']>a:nth-child(1)").click()

结果:
在这里插入图片描述
PS:定位下拉元素时,可以F12进入到开发者工具,点击切换到Sources,按住Ctrl+\,页面会进入debug模式,停止继续执行
在这里插入图片描述
4.Selenium python中使用clear()清除文本框内容失效的问题
在做web自动化测试时,在弹出窗上的输入框,输入文本后,使用clear()方法无效
最开始是使用clear()清除文本框内容,但是文本框内容只是在页面上的显示被清除了,实际上其内容仍缓存,可通过最后的校验
清除文本框内容解决方法:
(1)使用json

js='document.querySelector("h5中元素的定位").value=\'\''		# json引号的转义是加\,即\'代表的是'(单引号)
wd.execute_script(js)

(2)使用键盘的快捷键进行全选,然后删除,彻底解决

from selenium.webdriver.common.keys import Keys

element=wd.find_element_by_css_selector("h5中元素的定位")
element.send_keys(Keys.CONTROL,"a")
element.send_keys(Keys.DELETE)

5.TypeError: test_add() takes exactly 11 arguments (1 given)
原因:传入方法test_add()的参数数量不对
具体实例:
在这里插入图片描述
报错:
在这里插入图片描述
由于在进行数据驱动测试时,忘记在测试类TestAdd上使用@ddt装饰器,没有将测试中的变量进行参数化,所以出现错误
PS:在进行数据驱动测试时,需要有的装饰器有@ddt,@data,@unpack,这种方式是较为常见的方式,可以实现多参数用例的参数化

@ddt在测试类上使用,将测试中的变量进行参数化
@data在测试方法上使用,可以把参数当做测试数据,参数可以是单个值,列表,元组,字典
@unpack把元组和列表解析成多个参数

6.DeprecationWarning: use driver.switch_to.window instead
在这里插入图片描述
原因及解决办法:
switch_to_window方法已过期,使用switch_to.window方法来代替

7.SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
在这里插入图片描述
原因:在windows系统当中读取文件路径可以使用,但是在python字符串中\有转义的含义,所以出现报错
解决方法:
(1)可在路径前加上r,保持字符原始值不变,\不转义,即

wd.find_element_by_css_selector("XXX").send_keys(r"C:\Users\ywgy\Desktop\YGXFAUTO\image\school.png")

(2)将单\替换为\

wd.find_element_by_css_selector("XXX").send_keys("C:\\Users\\ywgy\\Desktop\\YGXFAUTO\\image\\school.png")

(3)将\替换为/

wd.find_element_by_css_selector("XXX").send_keys("C:/Users/ywgy/Desktop/YGXFAUTO/image/school.png")
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值