2017-02-24 1 views
0

セレン2で働いていたコードの切り替えは、このコードは、ChromeでもFirefoxでもない、それ以上は動作しませんセレン3.セレン3:タブ

での作業を停止しました。

driver.get("http://the-internet.herokuapp.com/windows"); 
String firstWindow = driver.getWindowHandle(); 
driver.findElement(By.linkText("Click Here")).click(); 
driver.switchTo().window(firstWindow); 

私は、Firefoxのための回避策があることが見つかりました:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN); 

しかし、何もクロームのために働かないで。
助けてください

+0

[JavaでSelenium WebDriverを使用してスイッチを切り替える]の可能な複製(http://stackoverflow.com/questions/12729265/switch-tabs-using-selenium-webdriver-with-java) –

+0

例外を指定することはできますか?正確に「これ以上働かない」とは何ですか? –

+0

jainishに。あなたが提供したリンクを見ると、私が指摘したようにSelenium 3で動作しないコードが使用されていました。 – Vladimir

答えて

1

私はあなたが本当に新しいバグ(またはおそらく意図された動作?)に苦しんでいると思います。

コードをチェックしてテストしたところ、新しいタブが開かれてChromeに集中しても、driverは自動的にそのタブに切り替わらないことに気付きました。

driverが新しい(アクティブな)タブに切り替わるように、.switchTo().window(secondWindow)を追加する必要があります。

ので.switchTo()driverが使用しているとあなただけの2番目のタブにとどまるようので、それはdriver自身が最初のウィンドウに切り替えていても、見えタブを、集中していません。ここで

は、あなたが問題を理解するのに役立つかもしれないいくつかのコードです:

driver.get("http://the-internet.herokuapp.com/windows"); 
    String firstWindow = driver.getWindowHandle(); 
    System.out.print("First windowhandle: " + firstWindow + "\n"); 

    System.out.print("Clicking on 'Click Here' \n"); 
    driver.findElement(By.linkText("Click Here")).click(); 

    Set<String> stringSet = driver.getWindowHandles(); 
    System.out.print("All windowhandles: " + stringSet + "\n"); 
    List<String> handles = new ArrayList<>(stringSet); 

    System.out.print("Switching to new window \n"); 
    driver.switchTo().window(handles.get(1)); 
    //wait for Title to change to second tab title 
    new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs("New Window")); 

    System.out.print("Second (and current) windowhandle: " + driver.getWindowHandle() + "\n"); 

    System.out.print("Switching back to first Window. \n"); 
    driver.switchTo().window(firstWindow); 

    //wait for Title to change back to first title 
    new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs("The Internet")); 

    System.out.print("Last used windowhandle: " + driver.getWindowHandle() + "\n"); 

このコードを実行する場合は、二つのことに気づくでしょう。
A)driverWindowHandleを参照してください(正しいタブに切り替えます出力)
b)現在使用されているタブdriverの使用がChromeに正しくフォーカスされない

これはバグのようです。

+0

ありがとう、Robertさんへの返答ありがとうございます。質問を投稿する前にコードスニペットと同じ調査を行いました。これはバグです!誰がそれを修正するだろうか? :-)セレン3は本当にバギーです。たとえば、FirefoxのドライバはActionsクラスを実装していませんでした。 – Vladimir

関連する問題