如何使用Selenium WebDriver在新标签页(chrome)中打开链接?

System.setProperty("webdriver.chrome.driver", "D:\\softwares\\chromedriver_win32\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); driver.manage().window().maximize(); driver.get("https://mail.google.com/"); String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); driver.findElement(By.linkText("www.facebook.com")).sendKeys(selectLinkOpeninNewTab); 

新选项卡正在打开,但URL链接未打开。

我检查了下面的代码,它对我来说很好。 我从这里找到答案。

  driver = new ChromeDriver(); driver.manage().window().maximize(); baseUrl = "http://www.google.co.uk/"; driver.get(baseUrl); driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t"); ArrayList tabs = new ArrayList (driver.getWindowHandles()); driver.switchTo().window(tabs.get(1)); //switches to new tab driver.get("https://www.facebook.com"); driver.switchTo().window(tabs.get(0)); // switch back to main screen driver.get("https://www.news.google.com"); 

以下代码适用于Selenium 3和chrome版本58。

  WebDriver driver = new ChromeDriver(); driver.get("http://yahoo.com"); ((JavascriptExecutor)driver).executeScript("window.open()"); ArrayList tabs = new ArrayList(driver.getWindowHandles()); driver.switchTo().window(tabs.get(1)); driver.get("http://google.com"); 

首先使用Ctrl + t键打开空的新Tab,然后使用.get()获取所需的URL。 你的代码看起来像这样 –

 String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,"t"); driver.findElement(By.tagName("body")).sendKeys(selectLinkOpeninNewTab); driver.get("www.facebook.com"); 

如果要在新选项卡中打开当前视图上的链接,则可以使用上面编写的代码。 而不是By.linkText()确保使用适当的By选择器类来选择Web元素。

我使用下面的代码在浏览器中使用C#selenium打开一个新选项卡。

IJavaScriptExecutor js =(IJavaScriptExecutor)驱动程序;

js.ExecuteScript( “window.open();”);

我尝试了其他技术,但没有一个工作,也没有产生错误,但是当我使用下面的代码时,它对我有用。

 ((JavascriptExecutor)driver).executeScript("window.open()"); ArrayList tabs = new ArrayList(driver.getWindowHandles()); driver.switchTo().window(tabs.get(1)); driver.get("http://google.com"); 

Selenium只能在浏览器的WebElements上自动化。 打开新选项卡是在webBrowser上执行的操作,它是一个独立的应用程序。 为此,您可以使用java.util。*包中的Robot类,该类可以使用键盘执行操作,无论它是什么类型的应用程序。 所以这是您的操作代码。 请注意,您无法使用Robot类自动化独立应用程序,但您可以执行键盘或鼠标操作

 System.setProperty("webdriver.chrome.driver","softwares\\chromedriver_win32\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS); driver.manage().window().maximize(); driver.get("http://www.google.com"); Robot rob = new Robot(); rob.keyPress(keyEvent.VK_CONTROL); rob.keyPress(keyEvent.VK_T); rob.keyRelease(keyEvent.VK_CONTROL); rob.keyRelease(keyEvent.VK_T); 

完成此步骤后,您将需要一个窗口迭代器来切换到新选项卡:

 Set  ids = driver.getWindowHandles(); Iterator  it = ids.iterator(); String currentWindow = it.next(); String newWindow = it.next(); driver.switchTo().window(newWindow); driver.findElement(By.linkText("www.facebook.com")).sendKeys(selectLinkOpeninNewTab); 

您可以使用以下代码打开多个浏览器或窗口:

 WebDriver driver = new ChromeDriver(); driver.get("http://yahoo.com"); WebDriver driver1 = new ChromeDriver(); driver1.get("google.com"); WebDriver driver2 = new InternetExplorerDriver(); driver2.get("google.com/gmap");