使用selenium Java(Mac OSX)将Firefox浏览器置于前端

我正在使用三个火狐驱动程序实例进行自动化。我需要将当前活动的firefox浏览器放在前面,因为我正在使用一些机器人类进行一些操作。 我在mac(同样的操作)中尝试了谷歌浏览器的java脚本警报,并且工作正常。 在windows中使用user32 lib。 在firefox mac的情况下,它在后台显示警报,但网页没有出现在前面。

((JavascriptExecutor)this.webDriver).executeScript("alert('Test')"); this.webDriver.switchTo().alert().accept(); 

上面的代码我用于Mac中的chrome。 相同的代码正在工作并显示firefox的警报,但窗口没有出现在前面。

请建议是否有任何其他方法在Firefox中执行相同的操作。

首先将窗口句柄存储在变量中,然后使用它稍后返回窗口。

 //Store the current window handle String currentWindowHandle = this.webDriver.getWindowHandle(); //run your javascript and alert code ((JavascriptExecutor)this.webDriver).executeScript("alert('Test')"); this.webDriver.switchTo().alert().accept(); //Switch back to to the window using the handle saved earlier this.webDriver.switchTo().window(currentWindowHandle); 

此外,您可以尝试在切换到窗口后最大化窗口,这也应该激活窗口。

 this.webDriver.manage().window().maximize(); 

尝试使用窗口名称切换:

 driver.switchTo().window("windowName"); 

或者,您可以将“窗口句柄”传递给switchTo().window()方法。 知道这一点,就可以迭代每个打开的窗口,如下所示:

 for (String handle : driver.getWindowHandles()) { driver.switchTo().window(handle); } 

基于Selenium文档: http : //docs.seleniumhq.org/docs/03_webdriver.jsp

如其他主题中所述,您可以使用

  driver.manage().window().setPosition(new Point(-2000, 0)); 

太。

 # notifications for selenium chrome_options = webdriver.ChromeOptions() prefs = {"profile.default_content_setting_values.notifications": 2} chrome_options.add_experimental_option("prefs", prefs) current_path = os.getcwd() # current working path chrome_path = os.path.join(current_path, 'chromedriver') browser = webdriver.Chrome(executable_path=chrome_path, chrome_options=chrome_options) browser.switch_to.window(browser.current_window_handle) browser.implicitly_wait(30) browser.maximize_window() browser.get("http://facebook.com")