Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium通过跳过中间的标记来获取值 这是来自Redbus.in网站的_Java_Selenium_Selenium Webdriver - Fatal编程技术网

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"));        
            }