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

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表单验证字段无法直接获取,比如:
    selenium无法定位元素可能的原因_第1张图片
    这样只能通过js判断该字段是否为空,以及获取H5默认的属性值(提示文本)
    可以参考链接—参考链接

你可能感兴趣的:(selenium)