Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Selenium中打开一个新选项卡,而不关闭旧选项卡,保留以前的窗口_Java_Selenium - Fatal编程技术网

Java 如何在Selenium中打开一个新选项卡,而不关闭旧选项卡,保留以前的窗口

Java 如何在Selenium中打开一个新选项卡,而不关闭旧选项卡,保留以前的窗口,java,selenium,Java,Selenium,我正在处理2个URL。我需要打开第一个URL,执行一些操作,然后打开第二个URL openURL1() { 行动 } openURL2() { 行动 } 切换回URL1 当我使用driver.get或driver.navigate时,URL1会关闭。在打开URL2时,是否仍要保留带有URL1的窗口? 我正在使用selenium和JAVA如果第二个选项卡没有通过在第一个选项卡中执行的操作打开,那么您可以使用两个驱动程序对象,这样您就可以使用不同的驱动程序对象控制两个浏览器 WebDrive

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

openURL1() { 行动 }

openURL2() { 行动 } 切换回URL1

当我使用driver.get或driver.navigate时,URL1会关闭。在打开URL2时,是否仍要保留带有URL1的窗口?
我正在使用selenium和JAVA

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

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

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

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

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

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

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

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

您可以使用javascript打开新选项卡

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

您可以使用javascript打开新选项卡

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

以下是你问题的答案:

下面是打开URL
http://www.google.com
,在控制台上打印
在谷歌上工作
,打开
http://facebook.com/
在新选项卡中,在控制台中打印
在Facebook上工作
,关闭打开URL的选项卡
http://facebook.com/
,返回打开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();
System.setProperty(“webdriver.gecko.driver”,“C:\\your\u directory\\geckodriver.exe”);
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://www.google.com");
String first_tab=driver.getWindowHandle();
System.out.println(“在谷歌上工作”);
((JavascriptExecutor)驱动程序).executeScript(“window.open('http://facebook.com/');");
Set s1=driver.getWindowHandles();
迭代器i1=s1.Iterator();
while(i1.hasNext())
{
字符串next_tab=i1.next();
如果(!第一个选项卡相等信号案例(下一个选项卡))
{
driver.switchTo()窗口(下一个选项卡);
System.out.println(“在Facebook上工作”);
driver.close();
}
}
driver.switchTo()窗口(第一个选项卡);
driver.close();

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

以下是您问题的答案:

下面是打开URL
http://www.google.com
,在控制台上打印
在谷歌上工作
,打开
http://facebook.com/
在新选项卡中,在控制台中打印
在Facebook上工作
,关闭打开URL的选项卡
http://facebook.com/
,返回打开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();
System.setProperty(“webdriver.gecko.driver”,“C:\\your\u directory\\geckodriver.exe”);
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://www.google.com");
String first_tab=driver.getWindowHandle();
System.out.println(“在谷歌上工作”);
((JavascriptExecutor)驱动程序).executeScript(“window.open('http://facebook.com/');");
Set s1=driver.getWindowHandles();
迭代器i1=s1.Iterator();
while(i1.hasNext())
{
字符串next_tab=i1.next();
如果(!第一个选项卡相等信号案例(下一个选项卡))
{
driver.switchTo()窗口(下一个选项卡);
System.out.println(“在Facebook上工作”);
driver.close();
}
}
driver.switchTo()窗口(第一个选项卡);
driver.close();

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

可能与我刚才询问的问题重复。我如何保留旧窗口,同时仍能打开新选项卡。在我的例子中,当我打开一个新窗口(选项卡或窗口)时,上一个窗口会关闭。可能是重复的,我问我如何保留旧窗口,并仍然设法打开一个新选项卡。在我的例子中,当我打开一个新窗口(选项卡或窗口)时,上一个窗口被关闭。我尝试了这个方法,但它仍然关闭上一个窗口。这对我来说很好。您是否在关闭浏览器的前一个窗口上执行了任何操作?否则,除非您提供driver.close,否则浏览器将不会关闭。我尝试了此操作,但它仍在关闭上一个窗口。对我来说,它工作正常。您是否在关闭浏览器的前一个窗口上执行了任何操作?否则,除非你给driver.close,否则浏览器不会关闭。是的,这对我有用。非常感谢。你能告诉我将URL添加到窗口
(JavascriptExecutor(driver))的语法吗同样,如果这有效,请接受答案是的,这对我有效。非常感谢。你能告诉我将URL添加到窗口
(JavascriptExecutor(driver))的语法吗同样,如果这有效,请接受答案