我有一个测试,我需要在新标签中打开一个链接。这必须适用于Firefox和Chrome。我首先尝试使用Google页面上的Gmail链接。
在Firefox上它完美运行,Gmail在新标签页中打开。 但在Chrome上,Gmail页面会在同一窗口中打开,右键单击后菜单仍然保持打开状态。有人遇到过这个问题吗?
Beneath是我的示例代码。
Firefox代码:
FirefoxProfile myprofile;
ProfilesIni profile = new ProfilesIni();
myprofile = profile.getProfile("SeleniumAuto");
WebDriver driver = new FirefoxDriver(myprofile);
driver.get("http://www.google.com");
driver.manage().window().maximize();
Actions a = new Actions(driver);
WebElement e = driver.findElement(By.xpath("/html/body/div/div[3]/div[1]/div/div/div/div[1]/div[2]/a"));
a.moveToElement(e);
a.contextClick(e).sendKeys(Keys.ARROW_DOWN)
.sendKeys(Keys.ENTER).build().perform();
Chrome代码:
ChromeOptions options = new ChromeOptions();
options.addArguments("--test-type");
WebDriver driver = new ChromeDriver(options);
driver.get("http://www.google.com");
driver.manage().window().maximize();*/
Actions a = new Actions(driver);
WebElement e = driver.findElement(By.xpath("/html/body/div/div[3]/div[1]/div/div/div/div[1]/div[2]/a"));
a.moveToElement(e);
a.contextClick(e).sendKeys(Keys.ARROW_DOWN)
.sendKeys(Keys.ENTER).build().perform();
答案 0 :(得分:1)
我遇到了同样的问题。显然,ARROW_DOWN不起作用,所以我尝试使用键组合,它适用于我。代码如下:
1)在新标签页中打开,焦点仍在当前标签上
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(your_path)));
actions.keyDown(Keys.CONTROL).perform();
driver.findElement(By.xpath(your_path)).click();
actions.keyUp(Keys.CONTROL);
2)在新标签页中打开并移至新标签页
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(your_path)));
actions.keyDown(Keys.CONTROL).perform();
actions.keyDown(Keys.SHIFT).perform();
driver.findElement(By.xpath(your_path)).click();
actions.keyUp(Keys.SHIFT);
actions.keyUp(Keys.CONTROL);
希望这有帮助。
答案 1 :(得分:0)
是的,您可以使用Selenium轻松完成。使用键命令(Ctrl + T)打开一个新选项卡,然后使用Ctrl + Tab(Ctrl + \ t)命令切换到新打开的选项卡并执行任何必要的操作。它会像这样
//open a new tab
WebElement e= driver.findElement(By.cssSelector(abc)).sendKeys(Keys.Control + "t");
//switch control to new tab
e.sendKeys(Keys.Control + "\t");
{
perform some function here
enter code here
}
//switch back to old tab
e.sendKeys(Keys.Control + "\t");
如果浏览器只打开了两个标签,这将有效,因为它将使用Tab键在两个打开的标签之间移动。
希望这有帮助。
答案 2 :(得分:0)
对于Chrome,请尝试以下操作:
Actions a = new Actions(webdriver);
WebElement e = webdriver.findElement(By.xpath(your_path));
a.moveToElement(e).keyDown(Keys.CONTROL).click().build().perform();