我正在尝试抓取页面,但有时在单击链接/按钮时会遇到问题。
当网页加载时,"loadingWhiteBox“将首先出现,然后在几秒钟后消失(但它将保留在HTML代码中),只要该框出现在网站上,我就无法单击该链接,并得到以下错误信息:
selenium.common.exceptions.ElementClickInterceptedException: Message:
Element <span class="taLnk ulBlueLinks"> is not clickable at point
(318.3000030517578,661.7999877929688) because another element <div
class="loadingWhiteBox"> obscures it
有什么办法可以解决这个问题吗?我已经尝试使用以下命令:
driver.is_element_present_by_css('div[class*="loadingWhiteBox"]')
但是,即使在不活动的情况下,该元素仍然存在。
发布于 2018-02-07 15:49:07
您可以尝试以下两种方法来单击元素。
element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
driver.execute_script("arguments[0].click();", element)
element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()
希望这能行得通。
发布于 2020-03-14 21:04:33
此错误消息...
selenium.common.exceptions.ElementClickInterceptedException: Message: Element <span class="taLnk ulBlueLinks"> is not clickable at point (318.3000030517578,661.7999877929688) because another element <div class="loadingWhiteBox"> obscures it
...implies表示所需元素不可单击,因为某些其他元素会使其变得模糊。
有多种方法可以解决此问题,其中几种方法如下:
click()
时,您需要将WebDriverWait与WebDriverWaitWebDriverWait element_to_be_clickable()
结合使用,并且可以使用以下任一As- Using `CSS_SELECTOR`:
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,“span.taLnk.ulBlueLinks”).click()
span class(driver,20).until(EC.element_to_be_clickable((By.XPATH,“//
- Using `XPATH`:
@WebDriverWait=‘taLnk ulBlueLinks’”)).click()
invisibility_of_element()
的expected_conditions
结合使用,如下所示:driver(driver,20).until(EC.invisibility_of_element((By.CSS_SELECTOR,“div.loadingWhiteBox”) WebDriverWait(driver,20).until(EC.invisibility_of_element((By.CSS_SELECTOR,“div.loadingWhiteBox”).click()
span class(driver,20).until(EC.invisibility_of_element((By.XPATH,“//
- Using `XPATH`:
@WebDriverWait=‘loadingWhiteBox’”) WebDriverWait(driver,
- Using `XPATH`:
@WebDriverWait=‘taLnk ulBlueLinks’“).click()
execute_script()
方法,如下所示:driver WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,“driver.execute_script”)) driver.execute_script("arguments.click();",WebDriverWait(driver,driver“span.taLnk.ulBlueLinks”)
span WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,“//
- Using `XPATH`:
@WebDriverWait=‘
- Using `XPATH`:
WebDriverWait’”) driver.execute_script("arguments.click();",WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,“//
- Using `XPATH`:
@WebDriverWait=‘taLnk ulBlueLinks’”)
备注
您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
发布于 2019-03-25 12:27:45
你可以等到元素消失,
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("loadingWhiteBox")));
https://stackoverflow.com/questions/48665001
复制