使用 java 在 selenium webdriver 中打印第三个 window 的标题
Printing title of third window in selenium webdriver using java
我的场景是:
我有基地URL:www.****.com
打开URL后,我点击一个叫link,"Test",会打开另一个window说"B",在window B 我点击按钮 "button1",它会打开另一个 window "C"。 window C.
的称号我得拿
下面是我的示例代码:
driver.get("http://www.****.com/");
WebElement menu_ele =driver.findElement(By.tagName("a").linkText("PRACTICE"));
Actions act = new Actions(driver);
act.moveToElement(menu_ele).build().perform();
Thread.sleep(1000);
driver.findElement(By.tagName("a").linkText("Demo Sites")).click();
driver.findElement(By.tagName("a").linkText("http://www.****.com/Practiceform/")).click();
Set<String> window = driver.getWindowHandles();
String window1 = (String) window.toArray()[0];
String window2 = (String) window.toArray()[1];
// String window3 = (String) window.toArray()[2];
driver.switchTo().window(window2);
driver.findElement(By.id("button1")).click();
Set<String> win = driver.getWindowHandles();
String window3 = (String) window.toArray()[0];
driver.switchTo().window(window3);
System.out.println(driver.getTitle());
driver.manage().window().maximize();
我无法切换到 window C。我知道这不是最佳做法,建议一些实现它的方法。
在您的代码中,我看到您正在尝试切换到 window3,但您使用 String window3 = (String) window.toArray()[0];
将其分配给第一个 window
使用
String window3 = (String) window.toArray()[2];
相反。
您编辑的代码
Set<String> window = driver.getWindowHandles();
String window1 = (String) window.toArray()[0];
String window2 = (String) window.toArray()[1];
// String window3 = (String) window.toArray()[2];
driver.switchTo().window(window2);
driver.findElement(By.id("button1")).click();
Set<String> win = driver.getWindowHandles();
String window3 = (String) window.toArray()[2]; //get the third window from the set
driver.switchTo().window(window3);
System.out.println(driver.getTitle());
driver.manage().window().maximize();
我的场景是:
我有基地URL:www.****.com
打开URL后,我点击一个叫link,"Test",会打开另一个window说"B",在window B 我点击按钮 "button1",它会打开另一个 window "C"。 window C.
的称号我得拿下面是我的示例代码:
driver.get("http://www.****.com/");
WebElement menu_ele =driver.findElement(By.tagName("a").linkText("PRACTICE"));
Actions act = new Actions(driver);
act.moveToElement(menu_ele).build().perform();
Thread.sleep(1000);
driver.findElement(By.tagName("a").linkText("Demo Sites")).click();
driver.findElement(By.tagName("a").linkText("http://www.****.com/Practiceform/")).click();
Set<String> window = driver.getWindowHandles();
String window1 = (String) window.toArray()[0];
String window2 = (String) window.toArray()[1];
// String window3 = (String) window.toArray()[2];
driver.switchTo().window(window2);
driver.findElement(By.id("button1")).click();
Set<String> win = driver.getWindowHandles();
String window3 = (String) window.toArray()[0];
driver.switchTo().window(window3);
System.out.println(driver.getTitle());
driver.manage().window().maximize();
我无法切换到 window C。我知道这不是最佳做法,建议一些实现它的方法。
在您的代码中,我看到您正在尝试切换到 window3,但您使用 String window3 = (String) window.toArray()[0];
使用
String window3 = (String) window.toArray()[2];
相反。
您编辑的代码
Set<String> window = driver.getWindowHandles();
String window1 = (String) window.toArray()[0];
String window2 = (String) window.toArray()[1];
// String window3 = (String) window.toArray()[2];
driver.switchTo().window(window2);
driver.findElement(By.id("button1")).click();
Set<String> win = driver.getWindowHandles();
String window3 = (String) window.toArray()[2]; //get the third window from the set
driver.switchTo().window(window3);
System.out.println(driver.getTitle());
driver.manage().window().maximize();