python 已找到元素,但无法单击

liwlm1x9  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(156)

我试图通过它的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
6vl6ewon

6vl6ewon1#

虽然确定了元素,页面仍在加载,可能是它点击其他地方的原因。
向下滚动到元素,然后等待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()

相关问题