如果我的问题听起来很主要,我很抱歉,我在QA和Selenium方面很新。在Selenium的Chrome中启用弹出窗口
我正在使用Java和Selenium编写测试,在我的测试步骤中,当我点击一个按钮时,它应该打开另一个窗口,但Chrome阻止弹出窗口,我可以启用Selenium弹出窗口吗?
如果我的问题听起来很主要,我很抱歉,我在QA和Selenium方面很新。在Selenium的Chrome中启用弹出窗口
我正在使用Java和Selenium编写测试,在我的测试步骤中,当我点击一个按钮时,它应该打开另一个窗口,但Chrome阻止弹出窗口,我可以启用Selenium弹出窗口吗?
那么,您需要使用自定义配置来初始化ChromeDriver
,该配置将禁用该标志来阻止弹出窗口。从这个site,它的命令行开关是disable-popup-blocking
。因此,使用ChromeOptions
和DesiredCapabilities
,使用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相同的解决方案。
还有另一个选项来启用弹出窗口。因为有时您的公司可能会阻止您以管理员模式访问任何应用程序。如果上述方法失效,您可以使用以下代码启用弹出窗口。
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);
如果有人仍然遇到这个问题,这可能是因为他们使用旧版ChromeDriver。弹出式窗口拦截被默认从版本禁用21+
参考:https://bugs.chromium.org/p/chromedriver/issues/detail?id=1291
你对自己的Chrome个人资料在运行此?您是否可以按照以下说明禁用它们:https://support.google.com/chrome/answer/95472?hl = zh_CN? –
我不能手动完成它,它应该从我的代码内部处理 – LoveLovelyJava
我已经编写了这段代码,但我不确定它是否有效。但你可以试试看。 http://pastebin.com/5mqr9AX1 – JRodDynamite