【问题标题】:How do I open a new tab and without closing the old one in Selenium, retain the previous window如何打开一个新选项卡而不关闭 Selenium 中的旧选项卡,保留上一个窗口
【发布时间】:2017-06-15 09:36:25
【问题描述】:

我正在处理 2 个 URL。我需要打开第一个 URL,执行一些操作并打开第二个 URL。

openURL1() { 执行动作 }

openURL2() { 执行动作 } 切换回 URL1

当我使用 driver.get 或 driver.navigate 时,URL1 被关闭。无论如何在打开 URL2 时保留带有 URL1 的窗口吗? 我正在使用 selenium 和 JAVA

【问题讨论】:

标签: java selenium


【解决方案1】:

如果第二个选项卡不是通过在第一个选项卡中执行的操作打开的,那么您可以使用两个驱动程序对象,这样您就可以控制具有不同驱动程序对象的两个浏览器。

    WebDriver driver = new ChromeDriver();
    driver.get("https://news.ycombinator.com");

    WebDriver driver1 = new ChromeDriver();
    driver1.get("https://www.google.com");

通过这种方法,您可以使用驱动程序控制 URL1 和驱动程序 1 控制 URL2。

【讨论】:

  • 我试过了,但它仍然关闭上一个窗口
  • 它对我来说很好用。您是否在关闭浏览器的前一个窗口上执行了任何操作?否则,除非你给 driver.close 浏览器不会被关闭。
【解决方案2】:

这是您问题的答案:

这是工作代码块,它打开 URL http://www.google.com,在控制台上打印 Working on Google,在新选项卡中打开 http://facebook.com/,在控制台中打印 Working on Facebook,关闭打开 URL @ 的选项卡987654325@,让您回到打开 URL http://www.google.com 并最终关闭它的选项卡。

    System.setProperty("webdriver.gecko.driver", "C:\\your_directory\\geckodriver.exe");
    WebDriver driver =  new FirefoxDriver();
    driver.get("http://www.google.com");
    String first_tab = driver.getWindowHandle();
    System.out.println("Working on Google");
    ((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');");
    Set<String> s1 = driver.getWindowHandles();
    Iterator<String> i1 = s1.iterator();
    while(i1.hasNext())
    {

        String next_tab = i1.next();
        if (!first_tab.equalsIgnoreCase(next_tab))
        {
            driver.switchTo().window(next_tab);
            System.out.println("Working on Facebook");
            driver.close();
        }
    }
    driver.switchTo().window(first_tab);
    driver.close();

如果这能回答您的问题,请告诉我。

【讨论】:

    【解决方案3】:

    您可以使用javascript打开新标签

    (JavascriptExecutor(driver)).executeScript("window.open();");
    

    【讨论】:

    • 是的,这对我有用。谢谢你。你能告诉我在窗口中添加 URL 的语法吗
    • (JavascriptExecutor(driver)).executeScript("window.open(your_url_here);"); 另外,如果可行,请接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2021-06-26
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多