我想要做的是提取旅行列表并将其存储在列表中..但我无法从中获得确切的值。
<div id="t1-trvDiv" class="trvDiv" style="display: block;">
<ul id="t1-travListing" class="ul-listing">
<li id="t1-travls-0">
<li id="t1-travls-1">
<a title="National Travels" title1="1" onclick="bindTrav("t1",1);">
<span class="tickSelected"></span>
National Travels
</a>
</li>
<li id="t1-travls-2">
<a title="Seabird Tourists" title1="2" onclick="bindTrav("t1",2);">
<span class="tickSelected"></span>
Seabird Tourists
</a>
</li>
<li id="t1-travls-3">
...
</li>
这是我以前用来至少打印第一个值的java代码..
List<WebElement> allElements = driver.findElements(By.xpath("//ul[@id='t1-travListing']/li"));
int i=0;
allElements.remove(allElements.size()-1);
for (WebElement element: allElements) {
System.out.println(driver.findElement(By.xpath("//li[@id='t1-travls-0']/a/")).getText());
}
由于标签后面有span标签,我不知道如何跳过它并从中获取值
答案 0 :(得分:0)
您可以使用xpath直接选择节点:
//ul[@id = 't1-travListing']/li/a
将它与findElements一起使用,它将返回li-tags中所有a-Tags的列表。 Selenium的getText应该会显示所显示的文本,单独执行“span”标签的“跳过”:
List<WebElement> allElements = driver.findElements(By.xpath("//ul[@id = 't1-travListing']/li/a"));
for (WebElement element: allElements) {
System.out.println(element.getText());
}
您也可以尝试这样的表达式来选择不是元素,而是选择其中的文本:
//ul[@id = 't1-travListing']/li/a/text()
答案 1 :(得分:0)
请试试这个。这应该有用。
List<WebElement> allElements = driver.findElements(By.xpath("//ul[@id='t1-travListing']/li"));
int i=0;
allElements.remove(allElements.size()-1); // not sure why are you doing this
for (WebElement element: allElements) {
System.out.println(element.findElements(By.xpath("./a")).getText());
}
答案 2 :(得分:0)
这对你也有用
List<WebElement> allElements = driver.findElements(By.xpath("//*[contains(@id,'t1-travls')]"));
for (WebElement element: allElements) {
System.out.println(element.getText());
}
或
List<WebElement> allElements = driver.findElements(By.cssSelector("a[onclick*='bindTrav']"));
for (WebElement element: allElements) {
System.out.println(element.getAttribute("title"));
}