我正在使用三个火狐驱动程序实例进行自动化。我需要将当前活动的firefox浏览器放在前面,因为我正在使用一些机器人类进行一些操作。我曾尝试过java中的谷歌浏览器的java脚本警报(相同的操作),它的工作正常。在windows中使用user32 lib。在firefox mac的情况下,它在后台显示警报,但网页没有出现在前面。
((JavascriptExecutor)this.webDriver).executeScript("alert('Test')");
this.webDriver.switchTo().alert().accept();
我在Mac上用于Chrome的上述代码。相同的代码正在运行并显示firefox的警报,但窗口没有出现在前面。
请在Firefox中建议是否有其他方法可以做同样的事。
答案 0 :(得分:14)
首先将窗口句柄存储在变量中,然后使用它稍后返回窗口。
//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();
答案 1 :(得分:1)
尝试使用窗口名称进行切换:
driver.switchTo().window("windowName");
或者,您可以将“窗口句柄”传递给switchTo().window()
方法。知道了这一点,就可以像这样迭代每个打开的窗口:
for (String handle : driver.getWindowHandles()) {
driver.switchTo().window(handle);
}
基于Selenium文档:http://docs.seleniumhq.org/docs/03_webdriver.jsp
答案 2 :(得分:0)
如其他主题所述,您可以使用
driver.manage().window().setPosition(new Point(-2000, 0));
太
答案 3 :(得分: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")
答案 4 :(得分:0)
在Mac上,只有对我有用的东西:self.driver.fullscreen_window()
。