如何使用 webdriver 关闭网页上的弹出窗口

Posted

技术标签:

【中文标题】如何使用 webdriver 关闭网页上的弹出窗口【英文标题】:how to close a pop up window on a web page using webdriver 【发布时间】:2015-12-11 00:27:39 【问题描述】:

public class Day4

    @Test
    public void main() throws InterruptedException
    
        WebDriver Driver = new FirefoxDriver();
        Driver.get("http://live.guru99.com");
        Driver.manage().window().maximize();
        Thread.sleep(6000);
        WebElement element = Driver.findElement(By.xpath("//a[text()='Mobile']"));
        element.click();
        element = Driver.findElement(By.xpath("//a[text()='IPhone']/../../div[@class='actions']//a[text()='Add to Compare']"));
        Thread.sleep(2000);
        element.click();
        element = Driver.findElement(By.xpath("//a[text()='Samsung Galaxy']/../../div[@class='actions']//a[text()='Add to Compare']"));
        Thread.sleep(2000);
        element.click();
        element = Driver.findElement(By.xpath("//button[@title='Compare']"));
        element.click();
        element = Driver.findElement(By.xpath("//button[@title='Close Window']"));
        Thread.sleep(6000);
        element.click();
        Set<String> windowId = Driver.getWindowHandles(); // get window id of current window
        Iterator<String> itererator = windowId.iterator();

        String mainWinID = itererator.next();
        String newAdwinID = itererator.next();

        Driver.switchTo().window(newAdwinID);
        System.out.println(Driver.getTitle());
        Thread.sleep(3000);
        Driver.close();

        Driver.switchTo().window(mainWinID);
        System.out.println(Driver.getTitle());
        Thread.sleep(2000);

        Driver.close();
    

【问题讨论】:

我们不是编码服务。请提供一个简洁的问题。另外,WTF是这个代码转储吗?不要代码转储。 欢迎来到 Stack Overflow!请阅读指南How do I ask a good question,尤其是关于最小、完整和可验证示例 (MCVE) 的部分。这将帮助您自己解决问题。如果您这样做但仍然卡住,您可以回来发布您的 MCVE、您尝试了什么以及结果如何,以便我们更好地帮助您。 ...请正确格式化您的代码。这将有助于提高可读性,并使人们更有可能回答您的问题。 AARRGGGHHHH... 我的眼睛在流血。摆脱所有那些 Thread.sleep() 的 【参考方案1】:

我检查了你的代码,发现下面的元素不存在

element = Driver.findElement(By.xpath("//button[@title='Close Window']"));

我已删除该代码,现在弹出窗口工作正常:--

 element = Driver.findElement(By.xpath("//button[@title='Compare']"));
 element.click();
 Set<String> windowId = Driver.getWindowHandles(); // get window id of current window
 Iterator<String> itererator = windowId.iterator();

 System.out.println(itererator);
 String mainWinID = itererator.next();
 String newAdwinID = itererator.next();

 Driver.switchTo().window(newAdwinID);

 Driver.close();

希望对你有帮助:)

【讨论】:

嗨 Shubham,当我运行代码时,它显示为 Unable to locate element: "method":"xpath","selector":"//button[@title='Close Window' ]" 命令持续时间或超时时间:41 毫秒。请检查一下。 这与我所说的没有元素作为关闭窗口存在相同。请删除该元素并单击操作。如果您删除该元素,则弹出窗口将成功打开和关闭

以上是关于如何使用 webdriver 关闭网页上的弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

iframe中的弹出窗口如何显示在最外层?

这种无边框的弹出窗口如何用JS实现?

如何处理Chrome Selenium网络驱动程序中的弹出窗口-Python

如果用户尚未登录,则用户登录的弹出窗口

如何使用 jquery 禁用 android 键盘的弹出窗口?

关闭jQUERY中的弹出窗口后如何刷新父页面? [复制]