当前位置: 首页 > 知识库问答 >
问题:

无法单击元素:元素Splinter/Selenium中的ElementClickInterceptedException

丌官皓君
2023-03-14

我试图刮掉一个页面,但我有时无法点击链接/按钮。

当网页加载时,那么loadingWhiteBox会先出现,然后在几秒钟后消失(但它会保留在超文本标记语言代码中),只要该框出现在网站上,我就不能点击链接并获得以下内容错误消息:

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"]')

但即使元素不处于活动状态,它也存在。

共有3个答案

须鸿祯
2023-03-14

你可以等到元素消失,

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("loadingWhiteBox")));
卢骏俊
2023-03-14

此错误消息。。。

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

...表示所需的元素不可单击,因为其他元素将其遮挡。

解决这一问题有多种方法,其中几个方法如下:

>

  • 当您打算调用单击()时,您需要诱导WebDriver等待与WebDriverWaitWebDriver等待element_to_be_clickable()结合,并且您可以使用以下定位器策略之一:

    >

  • 使用CSS\u选择器

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.taLnk.ulBlueLinks"))).click()
    

    使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='taLnk ulBlueLinks']"))).click()
    

    万一出错。。。另一个因素掩盖了它。。。仍然存在首先,您需要使WebDriverWait与阻塞元素的不可见性的预期\u条件不一致,如下所示:

    >

  • 使用CSS\u选择器

    WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.CSS_SELECTOR, "div.loadingWhiteBox")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.taLnk.ulBlueLinks"))).click()
    

    使用XPATH

    WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.XPATH, "//div[@class='loadingWhiteBox']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='taLnk ulBlueLinks']"))).click()
    

    如果问题仍然存在,您可以使用execute_script()方法,如下所示:

    >

  • 使用CSS\u选择器

    WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.CSS_SELECTOR, "div.loadingWhiteBox")))
    driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.taLnk.ulBlueLinks"))))
    

    使用XPATH

    WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.XPATH, "//div[@class='loadingWhiteBox']")))
    driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='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
    

  • 司徒英卓
    2023-03-14

    您可以尝试以下2种方法来点击元素。

    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()
    

    希望这能奏效。

     类似资料:
    • 我正在学习使用Java和Eclipse IDE的Selenium测试自动化。我正在尝试开发自己的XPAHT,但我在浏览器上安装了Chropath来帮助解决我自己无法解决的问题。在尝试与play按钮交互时,我遇到了以下问题几次。测试的目标是导航到网站的播客页面,选择一个播客,点击播放按钮。我尝试开发自己的xpath,但没有找到任何工作的xpath。我检查了Chropath插件,得到了这样的消息: 它

    • 我们已经更新到最新的Selenium版本3.141.59并且发现点击不起作用。我没有得到一个错误消息,表明单击失败,并移动到下一个函数或行。我已经验证了它在Chrome、Firefox和Edge上不起作用。我们的代码是用Java编写的。 在单击元素之前添加等待时间 操作 JavaScriptExecutor 如有任何帮助,我们将不胜感激!

    • 我正在使用Selenium和java,我无法单击模态中的元素。场景是这样的:单击框架内的项目后,它会打开一个模态,我需要单击此模态中的一个元素,但我无法获得它。 我已经尝试过: 我也尝试了用SwitchTo()这样做: 以下是我的modal的html: 这是来自firefox开发工具的CSS路径: 该对象永远找不到。 问题1:如果一个元素在一个模态中,必须以不同的方式管理? 问题2:如何最终让保存

    • 我知道我必须切换到一个iframe当我想要点击和元素在它里面。iFrame的开头是这样的: 我使用切换到它 然后,我尝试单击Iframe中的“Join”按钮,使用它的XPath: 在一张桌子里面。 我可以选择“以前的会议”选项卡,但不能使用加入或邀请按钮。 这两个图像只是一个接着一个。

    • 问题内容: 我试图单击“所有主题”和“所有状态”复选框,然后搜索结果。当我运行脚本时,会打开一个Chrome窗口,大小为1036x674。 如果我不理会窗口,则会出现元素点击拦截错误。如果我最小化或最大化窗口,则脚本可以正常工作。 我正在使用Selenium 3.141.0,chrome 76,chromedriver 76和python 3.6 但是我得到这个错误: ElementClickIn

    • 在谷歌航班页面上,我想点击对话框底部的右箭头(增加天数)(附图)。第二次点击给了我错误。 这是我的代码: 截图