我試圖使用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