1.如何判断元素不存在
- 目的:如果定位不到元素,先判断元素是否存在,如果不存在在定位不存在的原因
- slenium本身没有原生方法,需要用元素定位方法+try异常捕获
- 注意导入函数
from selenium.common.exceptions import NoSuchElementException
- 代码如下:这个元素是在一个浮层上,故肯定找不到
try:
self.driver.find_element_by_xpath("//a[@class='item item-zhui']//span[@class='ico']")
print("element exist")
except NoSuchElementException:
print("element doesn't exist")
2.selenium中hidden或者是display = none的元素是否可以定位到?
- 直接定位不可行,因为元素在页面不展示,肯定找不到
- 通过执行js代码,使得
display=block
,即可定位到 - 代码如下:
js = "document.getElementById(\"newResult\").style.display='block';"
self.driver.execute_script(js)
3.selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
- 元素不能被其他浮层之类的遮挡
- 元素在viewport内可见,否则需要通过滚动拉大窗口等操作让它可见
- 判断元素是否是可点击状态
element.is_enabled()
import unittest
from selenium import webdriver
import time
from selenium.common.exceptions import *
try:
self.driver.find_element_by_xpath("//a[@class='item item-zhui']//span[@class='ico']").is_enabled()
except NoSuchElementException:
print("element doesn't enabled")
4.如何提高selenium脚