2017-03-20 136 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"); 

} 
相关问题