如果我的問題聽起來很主要,我很抱歉,我在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