2015-10-19 70 views
2

如果我的问题听起来很主要,我很抱歉,我在QA和Selenium方面很新。在Selenium的Chrome中启用弹出窗口

我正在使用Java和Selenium编写测试,在我的测试步骤中,当我点击一个按钮时,它应该打开另一个窗口,但Chrome阻止弹出窗口,我可以启用Selenium弹出窗口吗?

+0

你对自己的Chrome个人资料在运行此?您是否可以按照以下说明禁用它们:https://support.google.com/chrome/answer/95472?hl = zh_CN? –

+0

我不能手动完成它,它应该从我的代码内部处理 – LoveLovelyJava

+1

我已经编写了这段代码,但我不确定它是否有效。但你可以试试看。 http://pastebin.com/5mqr9AX1 – JRodDynamite

回答

6

那么,您需要使用自定义配置来初始化ChromeDriver,该配置将禁用该标志来阻止弹出窗口。从这个site,它的命令行开关是disable-popup-blocking。因此,使用ChromeOptionsDesiredCapabilities,使用DesiredCapabilities.setCapability()函数添加所需的配置。

ChromeOptions options = new ChromeOptions(); 
options.addArguments("test-type"); 
options.addArguments("disable-popup-blocking"); 
DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
WebDriver driver = new ChromeDriver(capabilities); 

编辑:刚刚发现这个site相同的解决方案。

3

还有另一个选项来启用弹出窗口。因为有时您的公司可能会阻止您以管理员模式访问任何应用程序。如果上述方法失效,您可以使用以下代码启用弹出窗口。

WebDriver driver = new ChromeDriver(options); 
driver.manage().window().maximize(); 
driver.get("chrome://settings/content"); 
Thread.sleep(4000); 
driver.switchTo().frame("settings"); 
Thread.sleep(2000); 
driver.findElement(By.xpath("//input[@type='radio' and @name='popups']")).click(); 
Thread.sleep(4000); 
driver.findElement(By.id("content-settings-overlay-confirm")); 
Thread.sleep(4000); 
  • 使用开始测试之前,上面的代码。