Serenity は selenium に基づく BDD です。私は 3 つのウィンドウ ハンドラを使用しています。私の要件は次のようなものです-
ウィンドウを開く 1
ウィンドウ 2 を開くウィンドウ 1 の要素をクリックします。
3. ウィンドウ 3 を開くウィンドウ 2 の要素をクリックします。
- すべてのウィンドウを閉じる
すべてのウィンドウ ハンドラーは正常に入力を取得していますが、それでもウィンドウを切り替えることができません
Serenity は selenium に基づく BDD です。私は 3 つのウィンドウ ハンドラを使用しています。私の要件は次のようなものです-
ウィンドウを開く 1
ウィンドウ 2 を開くウィンドウ 1 の要素をクリックします。
3. ウィンドウ 3 を開くウィンドウ 2 の要素をクリックします。
すべてのウィンドウ ハンドラーは正常に入力を取得していますが、それでもウィンドウを切り替えることができません
//In first window - Do something to activate second window
//Actions ..... here
//Second window opens
//Following code handles second window
ArrayList<String> newTab = new ArrayList (getDriver().getWindowHandles());
getDriver().switchTo().window(newTab.get(1));
//In second window - do some actions here
ArrayList<String> newTabs = new ArrayList<String> getDriver().getWindowHandles());
getDriver().switchTo().window((newTabs.get(2)));
//In Third Window
//Do some actions here
//Close Third Window
getDriver().close(); //Disable if the action in third window closes third window like Cancel/OK button
//Switch back to second window
getDriver().switchTo().window(newTab.get(1));
//Close Second Window
getDriver().close();
//ghet back to initial (First) window
getDriver().switchTo().window(newTab.get(0));
これは、最大2つのウィンドウを処理するのに少しうまくいきましたが、3つではうまくいきませんでした -
public class MultipleWindowsHandle {
WebDriver driver;
@Before
public void setup() throws Exception {
driver=new FirefoxDriver();
String URL="http://www.seleniummaster.com";
driver.get(URL);
driver.manage().window().maximize();
}
@Test
public void test() throws Exception {
// Opening site
driver.findElement(By.xpath("//img[@alt='SeleniumMasterLogo']")).click();
// Storing parent window reference into a String Variable
String Parent_Window = driver.getWindowHandle();
// Switching from parent window to child window
for (String Child_Window : driver.getWindowHandles())
{
driver.switchTo().window(Child_Window);
// Performing actions on child window
driver.findElement(By.id("dropdown_txt")).click();
List dropdownitems=driver.findElements(By.xpath("//div[@id='DropDownitems']//div"));
int dropdownitems_Size=dropdownitems.size();
System.out.println("Dropdown item size is:"+dropdownitems_Size);
((WebElement) dropdownitems.get(1)).click();
driver.findElement(By.xpath("//*[@id='anotherItemDiv']")).click();
}
//Switching back to Parent Window
driver.switchTo().window(Parent_Window);
//Performing some actions on Parent Window
driver.findElement(By.className("btn_style")).click();
}
@After
public void close() {
driver.quit();
}
}