2017-06-15 86 views
1

我正在处理2个URL。我需要打开第一个网址,执行一些操作并打开第二个网址。如何在Selenium中打开新选项卡并且不关闭旧选项卡,保留上一个窗口

openURL1() { 执行操作 }

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

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

+0

的可能的复制[如何打开使用硒的webdriver与Java的新选项卡?](https://stackoverflow.com/questions/17547473/how-to-open-a-new-tab-using-selenium-webdriver -with-java) –

+0

我在问我如何保留旧窗口,并仍然设法打开一个新选项卡。在我的情况下,当我打开一个新窗口(选项卡或窗口)时,前一个窗口会关闭。 – user1851202

回答

1

这里是回答你的问题:

这里是打开的URL http://www.google.com,版画Working on Google在控制台上运行的代码块,打开http://facebook.com/在新选项卡中,在控制台中打印Working on 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(); 

让我知道如果这个回答你的问题。

+0

是的,这个工程正好。谢谢 – user1851202

+0

@ user1851202好消息!您可以通过点击答案旁边的勾号来接受答案,就在投票上/下箭头下面,所以刻度标记变为绿色?谢谢 – DebanjanB

3

工作如果第二个选项卡不会通过已在第一个选项卡执行的操作打开,那么你可以使用两个驱动程序对象,这样你将有两个不同的浏览器控制驾驶员对象。

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

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

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

+0

我试过了,但它仍然关闭之前的窗口 – user1851202

+0

它对我来说工作正常。在上一个窗口关闭浏览器时是否有任何操作?否则,除非你给driver.close浏览器将不会关闭。 –

1

您可以使用JavaScript打开新的标签页

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

是的,这为我工作。谢谢。你能告诉我添加URL到窗口的语法 – user1851202

+0

'(JavascriptExecutor(driver))。executeScript(“window.open(your_url_here);”);'另外,如果这个工作,请接受答案 –

相关问题