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


    } 

} 

私のコードでは、同じブラウザで2つのタブを開きたいのですが、このコードでは1つのタブしか開きません。同じブラウザで複数のタブを開くにはどうすればよいですか?同じブラウザで複数のタブを開く方法は?

+0

タイトルを短くしてください。彼らは全体の質問を含む必要はありません...問題を表すいくつかの単語はうまくいくでしょう – yakobom

+0

@yakobomあなたが私に尋ねるなら、この質問のタイトルはかなり正確です。 – kushal

+0

@Kushal、もちろん - これは私がそれにコメントしてから編集されたからです(編集できませんでした)。それは内部のテキストと重複していた。私にとっては – yakobom

答えて

2

他のタブでGmailを開くことはできません。なぜならセレンはウィンドウハンドルを使用して動作する特定のウィンドウを識別するためです。そのため、最初にドライバのようなハンドルを使用して特定のウィンドウを切り替える必要があります。 。

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"); 
      } 
     } 
    } 
} 

このコードは、私のために働いている:switchTo()ウィンドウ(ハンドル値)は

ここに完全なコードです。

+1

もありがとうございました –

+0

ようこそ:)あなたを助けて幸せ –

0

私は簡単なコードを書いてあり、それは私のために働いた。同じブラウザの異なるタブで2つの異なる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"); 

} 
関連する問題