找到元素,但不能点击



我正试图通过它的id找到一个元素,点击它并下载一个文件。

driver.get(url);
driver.implicitly_wait(60);
time.sleep(3)
element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "ContentPlaceHolder1_a1")))
href = element.get_attribute('href')
value = href.split('/')[-1]
print(value);
element.click(); # Error

错误element click intercepted: Element is not clickable at point (110, 1003)

我试过Xpath,也试过CSS路径。都给出相同的误差。如果我检查能见度,它就会超时。但是我可以手动看到元素是可见的

element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//a[contains(text(), 'text of the link')]")))

最后,我尝试了这个代码。

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "ContentPlaceHolder1_a1")))
ActionChains(driver).move_to_element(element).click().perform()

但是它给出了错误

selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: move target out of bounds

虽然标识了元素,但页面仍在加载,可能是它点击了其他地方的原因。

向下滚动到元素,然后等待1到2秒,然后单击。

它对我来说工作得很好。

element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "ContentPlaceHolder1_a1")))
element.location_once_scrolled_into_view #scroll down to element
time.sleep(2) # wait for 2 seconds , 1 sec working as well
element.click()

相关内容

最新更新