AttributeError: 'tuple' 对象没有属性 'is_enabled'

Lea*_*ner 2 python selenium

硒: 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)

有人可以帮助我我做错了什么吗?

Mar*_*ers 5

您正在将元组传递给需要元素的方法。从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)