我正在使用Selenium WebDriver。每个链接都在新的浏览器窗口中打开。这对我来说很不方便。我如何更改它,使它只在新选项卡中打开?
bxjv4tth1#
Selenium现在有能力切换标签页。下面的代码1:将适用于Firefox,代码2:对于IE和chrome,我们可以通过使用Robot类来完成,但控件不会自动移动到当前选项卡,因此我们需要使用窗口句柄方法切换到当前选项卡。下面给出的代码在运行单独的脚本时效果很好,但在作为套件运行时,您可能会感到执行键盘事件时的痛苦。为了避免这种情况,我们不得不通过使用selenium-Java中的javascript执行器,使用用户定义的javascript方法来处理其他可能性。我们可以切换窗口和选项卡之间的识别其名称分配给每个窗口,我们打开和名称将在字母数字字符。
***Code 1*** //First tab(default tab) driver.navigate().to("http://www.google.com"); driver.manage().window().maximize(); //second tab driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); driver.navigate().to("https://yahoo.com"); //third tab driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); driver.navigate().to("http://www.google.com"); //move to very first tab. driver.findElement(By.cssSelector("body")) .sendKeys(Keys.CONTROL + "\t"); // To close the current tab. driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w"); **code 2** driver.navigate().to("http://www.google.com"); driver.manage().window().maximize(); Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_T); Set<String> handles = driver.getWindowHandles(); List<String> handlesList = new ArrayList<String>(handles); String newTab = handlesList.get(handlesList.size() - 1); // switch to new tab driver.switchTo().window(newTab); driver.get("http://www.yahoo.com");
gr8qqesn2#
Selenium目前无法切换标签页。因此我们强制浏览器在新窗口中打开链接,但由于我们可以切换窗口,因此我们强制浏览器采用这种方法。这个问题可能会在以后的版本中得到修复
nkcskrwz3#
如果你不在乎标签页之间的切换,这是一个很高的可能性,只是使用以下选项在firefox:
FirefoxOptions options = new FirefoxOptions().addPreference("browser.link.open_newwindow", 3); WebDriver driver1 = new new FirefoxDriver(options);
正如下面的第一个链接所解释的,Selenium希望给予用户能够在标签页之间切换。实现这一点的解决方案是指示浏览器将标签页作为窗口打开。然而,这有一些不希望的副作用,如:
上面的代码为firefox恢复了这个选项。链接:
3条答案
按热度按时间bxjv4tth1#
Selenium现在有能力切换标签页。下面的代码1:将适用于Firefox,代码2:对于IE和chrome,我们可以通过使用Robot类来完成,但控件不会自动移动到当前选项卡,因此我们需要使用窗口句柄方法切换到当前选项卡。下面给出的代码在运行单独的脚本时效果很好,但在作为套件运行时,您可能会感到执行键盘事件时的痛苦。为了避免这种情况,我们不得不通过使用selenium-Java中的javascript执行器,使用用户定义的javascript方法来处理其他可能性。
我们可以切换窗口和选项卡之间的识别其名称分配给每个窗口,我们打开和名称将在字母数字字符。
gr8qqesn2#
Selenium目前无法切换标签页。因此我们强制浏览器在新窗口中打开链接,但由于我们可以切换窗口,因此我们强制浏览器采用这种方法。这个问题可能会在以后的版本中得到修复
nkcskrwz3#
如果你不在乎标签页之间的切换,这是一个很高的可能性,只是使用以下选项在firefox:
正如下面的第一个链接所解释的,Selenium希望给予用户能够在标签页之间切换。实现这一点的解决方案是指示浏览器将标签页作为窗口打开。然而,这有一些不希望的副作用,如:
上面的代码为firefox恢复了这个选项。
链接: