Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将浏览器从后向前移动?(Selenium Web驱动程序,Java)_Java_Javascript_Selenium_Webdriver - Fatal编程技术网

将浏览器从后向前移动?(Selenium Web驱动程序,Java)

将浏览器从后向前移动?(Selenium Web驱动程序,Java),java,javascript,selenium,webdriver,Java,Javascript,Selenium,Webdriver,有什么方法可以让浏览器从后到上(前)吗 情况是有两种浏览器,firefox和chrome。因此,我实例化了两个驱动程序,新的FirefoxDriver()和新的ChromeDriver(),让我们称它们为fdriver和cdriver 我想要的是,当程序使用Firefox时,Firefox浏览器应该位于顶部。铬也是如此。但是,当浏览器位于背面时,我被如何将其置于顶部所困扰 我已经试过了 Javascript:self.focus()和window.focus()。/WebDriverBacked

有什么方法可以让浏览器从后到上(前)吗

情况是有两种浏览器,firefox和chrome。因此,我实例化了两个驱动程序,新的FirefoxDriver()和新的ChromeDriver(),让我们称它们为fdriver和cdriver

我想要的是,当程序使用Firefox时,Firefox浏览器应该位于顶部。铬也是如此。但是,当浏览器位于背面时,我被如何将其置于顶部所困扰

我已经试过了

Javascript:self.focus()和window.focus()。/WebDriverBackedSelenium使驱动程序返回selenium并使用windowMaximize和windowFocus


任何想法都非常感谢,谢谢你应该可以用

driver.SwitchTo().Window("//name of the window");

这将使您关注任何窗口。

现在我不使用selenium,但我使用的是围绕selenium的包装器Geb,因此调用javascript对您来说可能有所不同,但我就是这样做的(应该是类似的)

我调用了javascript
alert
函数,该函数将窗口带到前台,然后我使用
webdriver.switchTo().alert().accept()
解除了警报

来自java.awt的Robot;可以帮助您:

Robot.mouseMove(webDriver.manage().window().getPosition().getX(),webDriver.manage().window().getPosition().getY());
Robot.mousePress(InputEvent.BUTTON1_MASK);
Robot.mouseRelease(InputEvent.BUTTON1_MASK);
限制:

  • 如果有多个监视器,则需要计算绝对坐标。作为webDriver.manage().window().getPosition().getX()提供当前使用的显示的偏移量
  • 窗口应该是可见的

我认为它只适用于同一驱动程序的两个窗口。它适用于两个不同的驾驶员吗?我通过这样做来测试它:1。新Firefoxdriver();2.新的InternetExplorerDriver();3.fdriver.switchTo().Window(fdriver.getWindowHandles().iterator().next());如果两个窗口都来自fdriver,则switchTo()将起作用。如果我做错了,请纠正我。Thanks@user836112你是对的,它不会那样做。我认为更好的处理方法是查看Selenium网格,在多台机器上运行多个测试。通过这种方式,您可以为每个虚拟机实例化一个WebDriver我可以考虑的是,在实例化另一个驱动程序之前,只需让当前驱动程序退出即可。如果是这种情况,您可以确保将驱动程序放在前面。是的,如果您没有同时在e上调用每个驱动程序,请关闭或关闭当前驱动程序,并在下一个上实例化,这样可以确保驱动程序(WebDriver)不会混淆要使用的驱动程序以及它应该查看的页面或DOM。
Robot.mouseMove(webDriver.manage().window().getPosition().getX(),webDriver.manage().window().getPosition().getY());
Robot.mousePress(InputEvent.BUTTON1_MASK);
Robot.mouseRelease(InputEvent.BUTTON1_MASK);