2016-04-15 6 views
0

1つのシナリオを自動化しようとしています。ここで、Webページのボタンをクリックすると、ブラウザの別のタブが開きます。私は別のタブに私のwebdriverを移動しようとしているが、成功していない。また、iframe内にあるボタンをクリックしたいと思います。すべてのヘルプは本当に感謝されブラウザの別のタブにSelenium Webdriverを移動し、iframe内のボタンをクリックする方法

ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles()); 
     driver.switchTo().window(tabs2.get(2)); 
     driver.switchTo().frame(0); 
     click(buttonwithiniframe); 

: はここに私のコードです!

+0

ので、問題の種類あなたはいますか?例外/エラーを記載してください。 –

+0

buttonwithinframeの場合、そのような要素は見つかりませんでした。しかし、私はwebdriverが新しいpage.aに切り替えるのではなく、iframeへの切り替えが簡単だと確信しています。 – Techie

答えて

0

新しいウィンドウに切り替える前に、新しいウィンドウを待つようにしてください。さらに、索引でウィンドウを選択することは信頼性がありません。

この例で新しく開いたウィンドウに切り替わり、最初のフレーム上のコンテキストを設定します。

import org.openqa.selenium.support.ui.WebDriverWait; 


WebDriverWait wait = new WebDriverWait(driver, 20); 

// get the main window handle 
String mainHandle = driver.getWindowHandle(); 

// wait for a new window and switch to it 
driver.switchTo().window(wait.until((WebDriver drv)->{ 
    for (String handle : drv.getWindowHandles()){ 
     if (!handle.equals(mainHandle)) 
      return handle; 
    } 
    return null; 
})); 

// set the context on the first frame 
driver.switchTo().frame(0); 

をラムダ式なしで新しいウィンドウを待つ:

// wait for a new window and switch to it 
driver.switchTo().window(wait.until(new ExpectedCondition<String>() { 
    @Override 
    public String apply(WebDriver drv) { 
     for (String handle : drv.getWindowHandles()){ 
      if (!handle.equals(mainHandle)) 
       return handle; 
     } 
     return null; 
    } 
})); 
+0

この例題はJava 8で書かれ、テストされました。どのバージョンを使用していますか?ラムダ式は以前のバージョンでは存在しませんでした。 –

+0

私は1.8.0_60を使用しています。 – Techie

+0

参考になる可能性があります。手動で 'import org.openqa.selenium.support.ui.WebDriverWait; 'を追加してみてください。 –

関連する問題