如何从列表中选择元素,单击它,返回列表并使用selenium webdriver选择下一个元素

时间:2016-02-24 09:21:19

标签: java selenium junit

我试图编写一个小应用程序(机器人),它将使用webdriver登录该站点,在搜索字段中搜索某些数据,然后通过单击从列表中选择每个元素其中之一,返回列表然后选择具有相同类名但父母不同的下一个元素。 我想我知道如何获得具有相同类名的所有元素:

List<WebElement> incognito_user = driver.findElements(By.xpath("//*[@id='results']/li[2]/div/h3/a"))

但是我需要一些for循环的帮助,这些循环将索引所有这些循环并转到下一页。

2 个答案:

答案 0 :(得分:0)

我以不同的方式解决了这个问题:

    boolean inLoop = true;
    int maxPages = 2;

    while(inLoop && (maxPages-- > 0)) {
        List<WebElement> incognito_user = driver.findElements(By.xpath("xpath"));
        String openInNewTab = Keys.chord(Keys.CONTROL, Keys.RETURN);
        for (WebElement element : incognito_user) {
            element.sendKeys(openInNewTab);
            driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN);
            waitSecs(randomNumber(5, 10));
            driver.switchTo().window(new ArrayList<String>(driver.getWindowHandles()).get(1));
            driver.close();
            driver.switchTo().window(new ArrayList<String>(driver.getWindowHandles()).get(0));
            waitSecs(randomNumber(5,10));
        }

        List<WebElement> nextElements = driver.findElements(By.xpath("xpath"));
        if (nextElements.size() > 0) {
            nextElements.get(0).click();
            waitSecs(randomNumber(5,10));
        }
        else {
            inLoop = false;
        }
    }

谢谢你的帮助。 亲切的问候

答案 1 :(得分:-1)

如果你需要处理元素列表,那么刚刚创建了selenium的包装器

  

点击()

public String clickButton(String parentClassIdentifier,String childClassIdentifier ,String index) throws IOException{

                WebElement parentButtonList = (WebElement)driver.findElementByXPath((parentClassIdentifier));
                List<WebElement> childButtonList = parentButtonList.findElementsByXPath((childClassIdentifier));
                int button_index = Integer.parseInt(prop.getProperty(index));   // conversion from String to Int
                childButtonList.get(button_index).click();
                Application_Log.info("Clicked on button :- " ,childClassIdentifier    +index );
                return "pass";

}

只需通过在代码

中传递标识符和列表索引来使用clickButton()