2017-07-07 11 views
1

私は次のような問題があります:コードを実行すると、新しいタブを開きたいのですが、私はそれに集中することはできません。焦点はまだ古いものです。ここ は私のコードです:Chromeで新しいタブを開く(新しいタブにはリンクしない)Selenium java

WebDriver driver = new ChromeDriver(); 

    driver.get("url for the initial tab"); 

    driver.manage().window().maximize(); 

    WebDriverWait wait = new WebDriverWait(driver, 15); 


    // Open tab for email generation 
    String url = "url for tab 2"; 

    ((JavascriptExecutor) driver).executeScript("window.open(arguments[0])", url); 

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

    String site = driver.getCurrentUrl(); 



    if(driver.findElements(By.xpath("xpath here")).size() != 0){ 
     System.out.println("Element is Present"); 
     }else{ 
     System.out.println("Element is Absent"); 
     } 
    System.out.println("Current URL:" + site); //I get the initial url. 

私はどのように古いものに切り替えて新しいタブに焦点を当てた後も? おかげでここ

+1

現時点では私の電話では問題が解決するはずです。https://stackoverflow.com/a/22944233 – EvilFeline

+0

@EvilFelineありがとう、これは私が必要としていたものです。 – EnislavMollov

答えて

0

は、あなたの質問への答えです:

私は、独自のコードを使用してjava.utilからSetを使用してWindowHandlesで動作するようにいくつかの調整でそれを書き換えています。

import java.util.Iterator; 
    import java.util.Set; 
    import java.util.concurrent.TimeUnit; 
    import org.openqa.selenium.JavascriptExecutor; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.chrome.ChromeDriver; 

    public class Q44970997_newTabURL 
    { 

     public static void main(String[] args) 
     { 

      String site = null; 
      System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); 
      WebDriver driver = new ChromeDriver(); 
      driver.get("https://google.com"); 
      driver.manage().window().maximize(); 
      System.out.println(driver.getTitle()); 
      String first_tab = driver.getWindowHandle(); 
      String url = "https://www.facebook.com/"; 
      ((JavascriptExecutor) driver).executeScript("window.open(arguments[0])", url); 
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
      site = driver.getCurrentUrl(); 
      Set<String> tab_handles = driver.getWindowHandles(); 
      Iterator<String> itr = tab_handles.iterator(); 
      while(itr.hasNext()) 
      { 
      String next_tab = itr.next(); 
      if(!first_tab.equalsIgnoreCase(next_tab)) 
       { 
        driver.switchTo().window(next_tab); 
        System.out.println(driver.getTitle()); 
        site = driver.getCurrentUrl(); 
        System.out.println("Current URL:" + site); //You get the new url. 
       } 
      } 

     } 

    } 

私に教えてください:今、あなたのコードがhttps://google.com最初を開き、Page Titleを出力し、現在のURLは、URL https://www.facebook.com/で新しいタブにその焦点をシフト新しいタブでURL https://www.facebook.com/を開き、その後、Page Titleを印刷しますこれがあなたの質問に答えたら。

関連する問題