获得焦点的Selenium webdriver从父项窗口从儿童窗口whichis流行音乐

时间:2015-03-24 06:53:42

标签: java selenium webdriver

我正在尝试从弹出窗口切换到父窗口,该窗口是通过单击生成的。

我尝试了一些我发现的方法,但没有找到它们。

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元素,但我也无法找到它。它正在切换到父窗口,但它无法做到这一点。

有人可以指出我遇到问题的地方。

感谢。

1 个答案:

答案 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以将切换控制切换到子窗口。