试图在<ul>标记内获取文本,但仅返回第一项Selenium

时间:2019-01-13 04:01:00

标签: java selenium selenium-webdriver

这是单行列表的结构

structure of the unodered list

我想将“ var”和“ time”的值转换为两个字符串并将它们保存在ArrayList中

List<String[]> finalResult = new ArrayList<>();

这是我尝试过的

 List<WebElement> typeElements =driver.findElements(By.xpath("//*[@id=\"container\"]/section[2]/div/div[2]/div[2]/ul/li"));
        for(int i=0;i<typeElements.size();i++){
            WebElement typeSingle = typeElements.get(i);
            String stName = typeSingle.findElement(By.xpath("//div/a/var")).getText();
            String stTime = typeSingle.findElement(By.xpath("//div/a/time")).getText();
            String singleType[] =stName,stTime};
            finalResult.add(singleType);

        }

我总共在

中获得了13个项目
  

finalResult

变量。但所有物品都是一样的

  

{“ title1”,“ 00:23”}

     

{“ title1”,“ 00:23”}

     

{“ title1”,“ 00:23”} ....

我希望他们像这样

  

{“ title1”,“ 00:23”}

     

{“ title2”,“ 00:31”} .....

我在做什么错了?

***编辑*

在for循环内的每个事件 typeSingle 指的是不同的ID 但 stName stTime 变量相同

2 个答案:

答案 0 :(得分:0)

要获取带有xpath的子元素,您需要使用./

String stName = typeSingle.findElement(By.xpath("./div/a/var")).getText();
String stTime = typeSingle.findElement(By.xpath("./div/a/time")).getText();

或使用CSS选择器:

String stName = typeSingle.findElement(By.cssSelector("var")).getText();
String stTime = typeSingle.findElement(By.cssSelector("time")).getText();

答案 1 :(得分:-1)

更改此

 String stName = typeSingle.findElement(By.xpath("//div/a/var")).getText();
 String stTime = typeSingle.findElement(By.xpath("//div/a/time")).getText();

为此解决了问题

String stName = typeSingle.findElement(By.xpath("div/a/var")).getText();
String stTime = typeSingle.findElement(By.xpath("div/a/time")).getText();