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

nlo*_*ogn 12 java selenium google-chrome browser-tab selenium-webdriver

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);
Run Code Online (Sandbox Code Playgroud)

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

小智 25

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

    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");
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的解决方案,因为 Ctrl + t 在 chrome 浏览器上总是被破坏,https://github.com/SeleniumHQ/selenium/issues/5462 (4认同)

Abd*_*eed 14

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

    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<String> tabs = new ArrayList<String> (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");
Run Code Online (Sandbox Code Playgroud)

  • 在line.switchTo().window(tabs.get(1))行中抛出异常; java.lang.IndexOutOfBoundsException:Index:1,size:1 at java.util.ArrayList.rangeCheck(ArrayList.java:653)at java.util.ArrayList.get(ArrayList.java:429)at test.SeleniumTest.main( SeleniumTest.java:31) (3认同)
  • 没有为我工作。只有一个标签打开了第一个网址 (2认同)
  • 我在上面的 chromedriver 中尝试过,但没有用。然后我尝试了 ((JavascriptExecutor)driver).executeScript("window.open()"); 这打开了一个新标签。 (2认同)

小智 11

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

((JavascriptExecutor)driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://google.com");
Run Code Online (Sandbox Code Playgroud)


Mik*_*ASP 6

Selenium 4 现在已经包含此功能,您可以使用任何 URL 直接打开新选项卡或新窗口。

WebDriverManager.chromedriver().setup();

driver = new ChromeDriver(options);

driver.get("www.Url1.com");     
//  below code will open Tab for you as well as switch the control to new Tab
driver.switchTo().newWindow(WindowType.TAB);

// below code will navigate you to your desirable Url 
driver.get("www.Url2.com");
Run Code Online (Sandbox Code Playgroud)

下载 Maven 依赖项,这是我下载的 -

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.7.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency> 
        
Run Code Online (Sandbox Code Playgroud)

你可以参考:https : //codoid.com/selenium-4-0-command-to-open-new-window-tab/

观看视频:https : //www.youtube.com/watch?v=7SpCMkUKq-Y&t=8s

谷歌搜索 - WebDriverManager selenium 4


use*_*229 5

如果您可以获得链接元素,则可以使用它。它还将带您到您打开的选项卡。

WebElement link= driver.findElement(By.tagname("a"));  
String keyString =   Keys.CONTROL+Keys.SHIFT.toString()+Keys.ENTER.toString());
link.sendKeys(keyString);
Run Code Online (Sandbox Code Playgroud)