我已经尝试了以下解决方案,但它没有用,我使用的是Selenium 3.9.1和Chrome v66.0.3,我们还有其他替代解决方案吗?
Solution 1:
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "/t");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://google.com");
Solution 2:
Actions act = new Actions(driver);
act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform();
答案 0 :(得分:0)
在新标签页中打开链接的唯一方法是模拟键盘快捷键。以下内容适用于FFX,Chrome&amp; IE
Selenium(目前)在浏览器窗口中没有任何标签概念,所以为了打开标签然后测试它你必须使用选项3.
尝试这样的事情:
WebDriver driver = new ChromeDriver();
driver.get("http://yahoo.com");
((JavascriptExecutor)driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://google.com");
P.S 看看这个bug - &gt; https://github.com/SeleniumHQ/selenium/issues/5462
答案 1 :(得分:0)
为什么不使用JavaScriptExecutor
打开一个新窗口并切换到它?
现在确定Java语法,但在Protractor中它可能是这样的
browser.executeScript('window.open()').then(function () {
browser.getAllWindowHandles().then(function (handles) {
var secondWindow = handles[1];
browser.ignoreSynchronization = true;
browser.switchTo().window(secondWindow).then(function () {
browser.get('https://google.com');
});
});
});
答案 2 :(得分:0)
String baseUrl = "http://www.google.co.uk/";
driver.get(baseUrl);
((JavascriptExecutor) driver).executeScript("window.open()");
Set<String> tabs = new HashSet<String>();
tabs = driver.getWindowHandles();
List<String> li = new ArrayList<String>(tabs);
driver.switchTo().window(li.get(1));
driver.get("https://www.fb.com");