【问题标题】:selenium: wait on a webelement硒:等待一个网络元素
【发布时间】:2017-09-28 02:21:31
【问题描述】:

我有这个函数,它通过 css 选择器找到一个元素并等待它是可点击的:

def wait_for_element_clickable(cls, selector, timeout=10, parent=None):
    """ wait for an element to be clickable """
    if parent is None:
      parent = cls.driver
    wd_wait = WebDriverWait(parent, timeout)

    # Wait for it to be visible too.
    cls.wait_for_element(selector=selector, parent=parent)

    wd_wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, selector)),
                  'waiting for element to be clickable ' + selector)
    return parent.find_element_by_css_selector(selector)

现在我有一种情况,我已经有一个 WebElement,我只想等待它可以点击。有没有办法在现有的 WebElement 上使用 EC.element_to_be_clickable?

【问题讨论】:

  • 尝试使用 Javascript 等待它会处理你的问题

标签: python selenium webdriver


【解决方案1】:

element_to_be_clickable 在 Python 中没有 WebElement 的重载(尽管它在 Java 和 C# 中具有)。不过你可以自己写

class element_to_be_clickable(object):
    def __init__(self, element):
        self.element = element

    def __call__(self, driver):
       return element.is_displayed() and element.is_enabled()

用途

wd_wait.until(element_to_be_clickable(element))

【讨论】:

  • 看起来 element.is_displayed() 和 element.is_enabled() 不是 wd_wait.until(EC.element_to_be_clickable 的等效替代品,这里也提到了:stackoverflow.com/a/30830689/549226
  • 我仍然看到该代码出现“元素...无法点击...”错误。
猜你喜欢
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多