如何使用 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 关闭网页上的弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章
如何处理Chrome Selenium网络驱动程序中的弹出窗口-Python