【问题标题】:Selenium. How to close a popup if the selector is not known in advance?硒。如果事先不知道选择器,如何关闭弹出窗口?
【发布时间】:2020-05-12 20:53:22
【问题描述】:

我无法提前知道选择器,因为该站点可以是在我的 Selenium 项目的浏览器页面上打开的任何站点。如果我不知道选择器,如何关闭弹出窗口?

需要一种通用的方法来确定窗口关闭按钮的元素。

我正在考虑使用神经网络定义网络元素,有没有更简单的?你知道现成的解决方案吗?

【问题讨论】:

  • 两个问题:1)“弹出”是指单独的弹出窗口,还是同一网页上的模式对话框? 2) 我是否正确理解您正在针对未知网站编写 Selenium 测试?
  • 1) 是的,同一个网页上的模态对话框 2) 是的,您理解正确,我的测试在站点上随机走动并且不知道确切的选择器。

标签: java selenium selenium-webdriver neural-network


【解决方案1】:

如何为常用框架创建一个选择器列表,然后用 Javascript 删除整个 modal 元素:

private static final String CSS_SELECTOR_BOOTSTRAP = ".modal";
private static final String CSS_SELECTOR_JQUERY = ".ui-dialog";

// TODO: extend this list as you go
WebElement modalDialog = webDriver.getElement(By.cssSelector(String.join(",", CSS_SELECTOR_BOOTSTRAP, CSS_SELECTOR_JQUERY)));
((JavaScriptExecutor) webDriver).executeScript("arguments[0].parentNode.removeChild(arguments[0])", modalDialog);

【讨论】:

  • 对不起,这里必须指定选择器,但是需要自动选择关闭窗口的选择器
猜你喜欢
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2023-02-07
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
相关资源
最近更新 更多