我正在尝试从弹出窗口切换到父窗口,该窗口是通过单击生成的。
我尝试了一些我发现的方法,但没有找到它们。
public static String validateHierarchy(Properties prop)
{
String Hierarchy = driver.findElement(By.xpath("html/body/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[2]/td[2]/table/tbody/tr/td[1]/table/tbody/tr[34]/td")).getText();
Log.info(Hierarchy);
String mainWindowHandle = driver.getWindowHandle();
driver.findElements(By.cssSelector("a[class='left-link']")).get(10).click();
//switching to current window
Set<String> s = driver.getWindowHandles();
System.out.println("Window"+mainWindowHandle);
System.out.println("Window"+s);
Iterator<String> ite = s.iterator();
while(ite.hasNext())
{
String popupHandle=ite.next().toString();
if(!popupHandle.contains(mainWindowHandle))
{
driver.switchTo().window(popupHandle);
//checking for forgot password text in the current page
String part1 = driver.findElement(By.xpath("html/body/div[3]/form")).getText();
Log.info(part1);
String part2 = driver.findElement(By.xpath(".//*[@id='tree']")).getText();
Log.info(part2);
driver.close(); //closing child window
}
}
driver.switchTo().window( mainWindowHandle );
String mainWindowHandle1 = driver.getWindowHandle();
System.out.println("Window"+mainWindowHandle1);
driver.findElements(By.cssSelector("a[class='left-link']")).get(11).click();
//switching to current window
Set <String> s1 = driver.getWindowHandles();
System.out.println("Window"+mainWindowHandle1);
System.out.println("Window"+s1);
Iterator<String> ite1 = s1.iterator();
while(ite1.hasNext())
{
String popupHandle1=ite1.next().toString();
if(!popupHandle1.contains(mainWindowHandle1))
{
driver.switchTo().window(popupHandle1);
//checking for forgot password text in the current page
String part1 = driver.findElement(By.xpath("html/body/div[3]/form")).getText();
Log.info(part1);
String part2 = driver.findElement(By.xpath(".//*[@id='tree']")).getText();
Log.info(part2);
driver.close(); //closing child window
}
}
driver.switchTo().window( mainWindowHandle );
return Hierarchy;
}
第一个弹出窗口处理得当,但是当它出现时,转到点击选项&#34; get(11).click()&#34;。那里有错误说
窗口{ed1019d1-0ac5-4cc0-ba18-8efdadc10c4c} 窗口[{ed1019d1-0ac5-4cc0-ba18-8efdadc10c4c},{9e9cbcf5-9c4b-4805-918b-8f3eb7d9f946}] 窗口{ed1019d1-0ac5-4cc0,ba18-8efdadc10c4c} 线程&#34; main&#34;中的例外情况java.lang.IndexOutOfBoundsException:索引:11,大小:0 在java.util.ArrayList.rangeCheck(未知来源) at java.util.ArrayList.get(Unknown Source) 在JaamoonManage.validateHierarchy(JaamoonManage.java:299) 在JaamoonManage.main(JaamoonManage.java:106)
即使我也试图找到String Hierarchy元素,但我也无法找到它。它正在切换到父窗口,但它无法做到这一点。
有人可以指出我遇到问题的地方。
感谢。
答案 0 :(得分:0)
获得IndexOutOfBoundException的原因是,此定位器没有第11个元素 By.cssSelector(&#34; a [class =&#39; left-link&#39;]&#34; ) 强>
List中的get方法将返回此列表中指定位置的元素并抛出IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 || index&gt; = size())
再次检查下面的步骤。
driver.findElements(By.cssSelector("a[class='left-link']")).get(11).click();
请参阅this blog以将切换控制切换到子窗口。