Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python selenium:等待webelement_Python_Selenium_Webdriver - Fatal编程技术网

Python selenium:等待webelement

Python selenium:等待webelement,python,selenium,webdriver,Python,Selenium,Webdriver,我有一个函数,它通过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)

我有一个函数,它通过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可点击?

element可点击
在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()
使用


尝试使用Javascript wait,它将处理您的问题。它看起来像element.is_displayed()和element.is_enabled()并不是wd_wait.until(EC.element_to_be_clickable)的等价替代品,这里也提到了这一点:我仍然在代码中看到“element…在点上不可单击…”错误。
wd_wait.until(element_to_be_clickable(element))