Java Selenium通过跳过中间的标记来获取值 这是来自Redbus.in网站的
我想做的是提取旅行列表并将其存储在列表中..但我无法从中获得确切的值Java Selenium通过跳过中间的标记来获取值 这是来自Redbus.in网站的,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我想做的是提取旅行列表并将其存储在列表中..但我无法从中获得确切的值 <div id="t1-trvDiv" class="trvDiv" style="display: block;"> <ul id="t1-travListing" class="ul-listing"> <li id="t1-travls-0">
<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标记,我不知道如何跳过它并从中获取值您可以直接使用xpath选择节点:
//ul[@id = 't1-travListing']/li/a
将其与findElements一起使用,它将返回li标记中所有a标记的列表。
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());
}
请试试这个。这应该行得通
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());
}
这也适用于你
List<WebElement> allElements = driver.findElements(By.xpath("//*[contains(@id,'t1-travls')]"));
for (WebElement element: allElements) {
System.out.println(element.getText());
}
或
你到底想提取什么?文本?我想做的是从这个页面上,我想把旅行下拉列表中的所有值保存到一个不起作用的列表中。只返回空值。另外,getText仅适用于findElement,而不适用于findElement。我尝试了以下方法。这是有效的。int travel=driver.findElementsBy.xpath//ul[@id='t1-travListing']/li.size-1;forint i=0;iya它正在工作。当我使用title属性获取值时,您可以尝试第二个选项吗?它意味着onclick包含文本
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"));
}