无法通过硒获取ul标签下的所有li项目

时间:2018-11-02 09:00:03

标签: selenium scroll

我试图获取li标签下的所有ul标签。 ul节点有31个li子节点,但是使用下面的代码片段,其计数只有26。

WebElement ul_stops = driver.findElement(By.xpath("//ul[@id='lstOnwardStopInitial']"));
List<WebElement> links = ul_stops.findElements(By.tagName("li"));

Also refer to screen shot which shows the HTML snippet

由于此HTML元素具有不同的滚动条,为避免元素可见性问题,尽管'e-vhandlespace'类是自定义滚动条,但以下代码用于页面向下滚动

jse.executeScript("arguments[0].scrollIntoView(true);",driver.findElement(By.className("e-vhandlespace")));

以下代码也无助于向下滚动:

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath("//div[@id='lstOnwardStopInitial_container']//*[@class='e-vhandlespace']/div[1]")));
actions.click().perform();
actions.sendKeys(Keys.DOWN).perform();

2 个答案:

答案 0 :(得分:2)

仔细看一下li-items的计数。在12和17之间有一个间隙,因此您可以得到所有物品。

答案 1 :(得分:0)

每次我遍历li项时,都可以通过按Keys.DOWN来解决滚动条问题。一次按下按键的操作无效。它既不向下滚动也不获取li项目信息,也不允许与任何li子节点进行交互。

WebElement ul_stops = driver.findElement(By.xpath(lst_StopIntial));
List<WebElement> links = ul_stops.findElements(By.tagName("li"));
for (WebElement e  : links)
    {
        actions.moveToElement(e);
        actions.sendKeys(Keys.DOWN).perform();
        System.out.println(e.getText());
}

以上工作有效 谢谢 Anjana