首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击body not close弹出窗口selenium

单击body not close弹出窗口selenium
EN

Stack Overflow用户
提问于 2021-05-14 16:08:23
回答 3查看 174关注 0票数 0

我正在尝试执行一个网页上的身体点击。当我加载一个网页时,会显示一个弹出窗口。我可以通过单击屏幕上的任意位置来关闭该弹出窗口。这个弹出窗口没有标准化的类名或id (不断变化),所以我想模拟一个按钮,点击body来关闭它。

我试过了

代码语言:javascript
复制
driver.find_element_by_tag_name('html').click()

driver.find_element_by_tag_name('body').click()

我没有收到任何错误,但弹出窗口未关闭

然后我试着点击一个随机的背景元素,但是当我尝试的时候它给了我一个错误

代码语言:javascript
复制
driver.find_element_class_name('abc').click()

ElementClickInterceptedException: Message: element click intercepted

有没有办法点击body或其他html标签来关闭它?

代码语言:javascript
复制
<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>
EN

回答 3

Stack Overflow用户

发布于 2021-05-14 16:30:19

对弹出窗口使用dom元素,在大约2-3秒的短暂等待之后,只需点击一下即可。应该能行得通。

注意:这里使用了,driver.find_element_name,,但它应该是dom元素,如id、类或与dom元素相关的其他属性。

代码语言:javascript
复制
driver.find_element_name('abc').click()

ElementClickInterceptedException: Message: element click intercepted
票数 0
EN

Stack Overflow用户

发布于 2021-05-14 17:04:15

只是弹出窗口需要一段时间才能显示出来

代码语言:javascript
复制
driver.find_element_by_tag_name('html').click()

已经被执行了..

尝试在执行body.click()之前进行一些睡眠

下面是一个示例,但它是用java编写的

代码语言:javascript
复制
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();;

如果没有睡眠,代码就不会工作。

票数 0
EN

Stack Overflow用户

发布于 2021-05-14 17:47:37

您不能使用Selenium单击body或某些背景元素,而这些元素实际上被其他元素所覆盖,因为Selenium模拟用户的UI操作。

因此,如果您尝试单击下面的元素,则上面的元素实际上是单击的收据。这就是字面上的element click intercepted错误的意思。

在这种情况下,您可以使用JavaScript单击。

因此,要使用JS单击body,请尝试执行以下命令:

代码语言:javascript
复制
driver.execute_script("document.getElementByTagName('body').click()")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67531045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档