2017-03-20 171 views
2
import org.openqa.selenium.By; 
import org.openqa.selenium.Keys; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class newtab { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     String driverpath = "geckodriver path\\"; 
     System.setProperty("webdriver.gecko.driver",driverpath+"geckodriver.exe"); 
     WebDriver driver = new FirefoxDriver(); 
     driver.get("https://www.google.com"); 
     driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
     driver.get("http://www.gmail.com"); 


    } 

} 

在我的代碼中,我想在同一瀏覽器中打開兩個選項卡,但此代碼僅打開一個選項卡。如何在同一瀏覽器中打開多個標籤頁?如何在同一瀏覽器中打開多個選項卡?

+0

請縮短您的頭銜。他們不需要包含整個問題......代表這個問題的幾個詞就沒事了 – yakobom

+0

@yakobom如果你問我,這個問題的標題是非常精確的。 – kushal

+0

@ Kushal,當然 - 這是因爲它被編輯了,因爲我評論過(我無法執行編輯)。這是裏面的文字的重複。 – yakobom

回答

2

您無法在其他選項卡中打開Gmail,因爲焦點仍然位於第1個窗口,因爲硒會識別出使用窗口句柄的特定窗口,因此您必須先使用像driver這樣的句柄來切換該特定窗口。 。SWITCHTO()窗口(句柄值)

這裏是完整的代碼:

public static void main(String[] args) { 

    System.setProperty("webdriver.chrome.driver", "c:\\SRP\\chromedriver.exe"); 

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

    String newTab =null; 
    String baseTab = driver.getWindowHandle(); 

    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 

    Set <String> allTabs = driver.getWindowHandles(); 

    allTabs.remove(baseTab); 

    Iterator<String> itr = allTabs.iterator(); 

    while(itr.hasNext()){ 


    newTab = (String) itr.next(); 

    } 

    driver.switchTo().window(newTab); 
    driver.get("http://www.gmail.com"); 

} 
1
import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import java.util.Set; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class NewTab { 

    public static void main(String[] args) throws AWTException { 
     System.setProperty("webdriver.gecko.driver", "C:\\Users\\User-024\\Downloads\\geckodriver.exe"); 
     WebDriver driver = new FirefoxDriver(); 
     driver.get("https://www.google.com"); 
     String parent = driver.getWindowHandle(); 

     Robot r = new Robot(); 
     r.keyPress(KeyEvent.VK_CONTROL); 
     r.keyPress(KeyEvent.VK_T); 

     Set<String> browsers = driver.getWindowHandles(); 
     for (String i : browsers) { 
      if (!i.equals(parent)) { 
       driver.switchTo().window(i); 
       driver.get("http://www.gmail.com"); 
      } 
     } 
    } 
} 

此代碼爲我工作。

+1

對我來說也很感謝 –

+0

歡迎:)高興地幫助你 –

0

我寫了簡單的代碼,它爲我工作。它在同一瀏覽器的不同選項卡中打開兩個不同的URL。

public void cls(){ 
    WebDriver driver = new FirefoxDriver(); 

driver.get("http://google.com"); 
String baseTab = driver.getWindowHandle(); 
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
driver.get("http://gmail.com"); 

} 
相關問題