无法检索li标签信息

时间:2016-12-15 04:00:34

标签: php selenium xpath selenium-webdriver

这个网站有一个有趣的结构,我实际上设法得到了我想要的硒,但第二次尝试时,我无法得到我想要的数据。这是怎么回事: -

第一次尝试(正确信息): - 银行名单, 银行账户和余额

第二次尝试(错误信息): - 银行转账方式, 银行名单

我注意到div突然转移到了不同​​的位置。我正在使用此xpath来提取我想要的信息: -

//div[12]/div[1]/ul[1]/li['.$x.']

现在我希望它基于div id提取基础,所以我提出了这个xpath: -

//*[@id="idBnk_panel"]//div/ul/following::li

但它无法正常提取我需要的信息。知道如何根据这种结构从li标签中获取信息吗?

<div id="something_here">
    <div>
        <ul>
           <li></li>
           <li></li>
           <li></li>
        </ul>
    </div>
</div>

3 个答案:

答案 0 :(得分:0)

我的理解是您要提取所有3个<li>标记数据。所以这是代码 -

    List<WebElement> element  =  driver.findElements(By.xpath("//div[@id='something_here']/div/ul/li"));
    for(WebElement iterate:element)
    {
        System.out.println(iterate.getText());
    }

我已使用getText()方法,只需获取<li>标记的文字。您可以根据您的要求操纵您想要做的事情。

答案 1 :(得分:0)

您使用的xpath不正确 // * [@ ID = “idBnk_panel”] // DIV / UL /以下::利

根据您显示的HTML,正确的xpath是 // DIV [@ ID = 'something_here'] / DIV / UL /利[index_number_as_required] 或者你可以直接使用 // DIV [@ ID = 'something_here'] //的Li [index_number_as_required]

然后使用String text = driver.findElement(By.xpath(// div [@ id ='something_here'] // li [index_number_as_required]))。getText();

答案 2 :(得分:0)

如果xpath由于某些动态数据显示而不时变化,因为&#34; id&#34;如果有div,你也可以使用下面的代码。

List<WebElement> mainLabels = new ArrayList<WebElement>();
mainLabels = driver.findElement(By.id("something_here")).findElements(By.tagName("li"));
//mainLabels list contains all the li elements

//Then you can access the texts either this way
mainLabels.get(0).getText();//This will give you the text that is in first li
mainLabels.get(1).getText();//This will give you the text that is in second li

//OR this way
for (int i = 0; i < mainLabels.size(); i++) {
    System.out.println(mainLabels.get(i).getText());
}