selenium无法定位元素可能的原因

  • 1、动态id,或者动态属性
	# 模糊查询解决
	//*[contains(@属性,“部分不变的属性值”)]
	//*[starts-with(@属性,"开头固定不变的属性值")]
	//*[ends-with(@属性,"结尾固定不变的属性值")]
	
	# 可以采取相对定位,先定位父元素,再定位目标元素
	//input/div[1]
	
	# 先找到父元素
	temp_father= driver.find_element_by_css_selector("input")
	# 位置是从1开始,div[1]表示第一个
	temp_son = temp_father.find_element_by_css_selector("div[1]")
  • 2、元素存在iframe/frame表单中
# 表单名字
driver.switch_to.frame('frame_name')
# 表单ID
driver.switch_to.frame(1)
# 传入元素
driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])

  • 3、元素不在同一个frame中
driver.switch_to.default_content()
  • 4、代码css或者xpath语法错误,自己纠正即可。
  • 5、页面加载过快
# 强制等待
time.sleep(3)

# 隐私等待,找不到报:没有找到此元素错误
driver.implicitly_wait(3)


# 显示等待,找不到:报超时错误
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver,timeout=0.5,).until(lambda x:x.find_element_by_xpath("//input"))
  • 6、多窗口
driver.switch_to.window(driver.window_handles[1])
  • 7、H5表单验证字段无法直接获取,比如:
    在这里插入图片描述
    这样只能通过js判断该字段是否为空,以及获取H5默认的属性值(提示文本)
    可以参考链接—参考链接
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值