我试图刮掉一个页面,但我有时无法点击链接/按钮。
当网页加载时,那么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"]')
但即使元素不处于活动状态,它也存在。
你可以等到元素消失,
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("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
...表示所需的元素不可单击,因为其他元素将其遮挡。
解决这一问题有多种方法,其中几个方法如下:
>
当您打算调用单击()
时,您需要诱导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
您可以尝试以下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
在谷歌航班页面上,我想点击对话框底部的右箭头(增加天数)(附图)。第二次点击给了我错误。 这是我的代码: 截图