我正在尝试执行一个网页上的身体点击。当我加载一个网页时,会显示一个弹出窗口。我可以通过单击屏幕上的任意位置来关闭该弹出窗口。这个弹出窗口没有标准化的类名或id (不断变化),所以我想模拟一个按钮,点击body来关闭它。
我试过了
driver.find_element_by_tag_name('html').click()
driver.find_element_by_tag_name('body').click()我没有收到任何错误,但弹出窗口未关闭
然后我试着点击一个随机的背景元素,但是当我尝试的时候它给了我一个错误
driver.find_element_class_name('abc').click()
ElementClickInterceptedException: Message: element click intercepted有没有办法点击body或其他html标签来关闭它?
<div tabindex="-1" aria-modal="true" role="alertdialog" class="ca ew bz bx by c0 sb cr fs cw ap st t6 t7 sv sq i9 sw sx sy">
<div data-baseweb="block" class="qv c4 db c3">
<div data-baseweb="block" class="aq ar fq fr">A message </div>
<div data-baseweb="block" class="f5 aq e5 d8 at ao"><p data-baseweb="typo-paragraphlarge" class="fo aq e5 d8 at au dg">Spend $50 </p></div></div></div>发布于 2021-05-14 16:30:19
对弹出窗口使用dom元素,在大约2-3秒的短暂等待之后,只需点击一下即可。应该能行得通。
注意:这里使用了,driver.find_element_name,,但它应该是dom元素,如id、类或与dom元素相关的其他属性。
driver.find_element_name('abc').click()
ElementClickInterceptedException: Message: element click intercepted发布于 2021-05-14 17:04:15
只是弹出窗口需要一段时间才能显示出来
driver.find_element_by_tag_name('html').click()已经被执行了..
尝试在执行body.click()之前进行一些睡眠
下面是一个示例,但它是用java编写的
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://bharathish-diggavi.github.io/Selenium-Practice/popup.html");
driver.findElement(By.id("popupButton")).click();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
driver.findElement(By.tagName("body")).click();;如果没有睡眠,代码就不会工作。
发布于 2021-05-14 17:47:37
您不能使用Selenium单击body或某些背景元素,而这些元素实际上被其他元素所覆盖,因为Selenium模拟用户的UI操作。
因此,如果您尝试单击下面的元素,则上面的元素实际上是单击的收据。这就是字面上的element click intercepted错误的意思。
在这种情况下,您可以使用JavaScript单击。
因此,要使用JS单击body,请尝试执行以下命令:
driver.execute_script("document.getElementByTagName('body').click()")https://stackoverflow.com/questions/67531045
复制相似问题