2017-06-15 84 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);」);'另外,如果這個工作,請接受答案 –

相關問題