硒: 3.141.0,语言: Python 3。
访问以下显式等待方法时出现以下错误。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome(
"Path\\ChromeDriver_32.exe")
driver.get('foo')
element = WebDriverWait(driver, 10).until(
EC.staleness_of((By.XPATH, "//div[@class='loading_icon']")))
print(element)
Run Code Online (Sandbox Code Playgroud)
预期结果:元素退出 DOM 后返回 True。
实际结果: AttributeError: 'tuple' 对象没有属性 'is_enabled'
Traceback (most recent call last):
File "......../temp.py", line 14, in <module>
EC.staleness_of((By.XPATH, "//div[@class='loading_icon']")))
File "...\Python\Python37-32\lib\site-packages\selenium\webdriver\support\wait.py", line 71, in until
value = method(self._driver)
File "...\Python\Python37-32\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 315, in __call__
self.element.is_enabled()
AttributeError: 'tuple' object has no attribute 'is_enabled'
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我我做错了什么吗?
您正在将元组传递给需要元素的方法。从expected_conditions.staleness_of()文档:
class selenium.webdriver.support.expected_conditions.staleness_of(element)等到元素不再附加到 DOM。
element是要等待的元素。
这与其他一些expected_conditions使用定位器参数的便捷方法不同。这个特殊的方法不能使用定位器,因为定位器只能找到仍然附加到 DOM 的元素。
在分离之前先定位元素:
from selenium.common.exceptions import NoSuchElementException
try:
element = driver.find_element_by_xpath("//div[@class='loading_icon']")
WebDriverWait(driver, 10).until(EC.staleness_of(element))
except NoSuchElementException:
element = None
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2121 次 |
| 最近记录: |