我试图使用expected_conditions.element_to_be_clickable,但它似乎没有工作。在大约30%的运行中,我仍然看到“元素...在点上不可点击”的错误。selenium:等待元素可点击不起作用
以下是完整的错误消息:
selenium.common.exceptions.WebDriverException: Message: unknown error: Element ... is not clickable at point (621, 337). Other element would receive the click: ... (Session info: chrome=60.0.3112.90) (Driver info: chromedriver=2.26.436421 (6c1a3ab469ad86fd49c8d97ede4a6b96a49ca5f6),platform=Mac OS X 10.12.6 x86_64)
这里是我的工作代码:
def wait_for_element_to_be_clickable(selector, timeout=10):
global driver
wd_wait = WebDriverWait(driver, timeout)
wd_wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, selector)),
'waiting for element to be clickable ' + selector)
print ('WAITING')
return driver.find_element_by_css_selector(selector)
更新:
所以现在这是非常奇怪的。即使我添加了几个固定的等待时间,它仍然偶尔会抛出错误消息。以下是拨打电话的代码:
sleep(5)
elem = utils.wait_for_element_to_be_clickable('button.ant-btn-primary')
sleep(5)
elem.click()
有人会认为该函数在进行isClickable测定时会考虑到这一点。我最终创建了自己的函数来捕获异常并执行重试。 – opike