这个网站有一个有趣的结构,我实际上设法得到了我想要的硒,但第二次尝试时,我无法得到我想要的数据。这是怎么回事: -
第一次尝试(正确信息): - 银行名单, 银行账户和余额
第二次尝试(错误信息): - 银行转账方式, 银行名单
我注意到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>
答案 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());
}