2

我试图通过一个元素在表中找到一行,然后在该行中找到一个元素并返回一个属性(或做其他事情)。

这里的java selenium 代码找到了一个表体。getText() 准确地打印出每一行的行中的文本,但 s.findElement(xpath).getText() 将返回 unique_cell_name 行是否包含它。并且 if 语句将在每个循环中输入。

我如何解决它?为什么 getText() 返回正确的文本但我在同一个 rowElement 中找不到元素?

      List<WebElement> listOfRows2 = driver().findElement(By.xpath("//table/tbody")).waitUntilPresent().findElements(By.xpath("./tr"));
      for(WebElement rowElement : listOfRows2){
          System.out.println("getText: " + rowElement.getText());
          String name = rowElement.findElement(By.xpath("//a[contains(text(),'unique_cell_name')]")).getText();
          System.out.println("name : " + tooltip);
          if(name.equals('unique_cell_name')){
                rowElement.findElement(By.xpath("//a[contains(text(),'unique_cell_name_to_row_but_not_table')]")).doSomething();
                //also want to check text in a specific column 5, where the same text might exist in the same row in the different column
                rowElement.findElement(By.xpath("//td[2]")).doSomething();
                break;
          }
      }

我在 java 中使用 selenium 2.53 和 serenity/cucumber。

4

1 回答 1

0

问题是 GrassHopper 提到的 By.xpath(".//td[2]") 中搜索节点子节点的时间段

  List<WebElement> listOfRows2 = driver().findElement(By.xpath("//table/tbody")).waitUntilPresent().findElements(By.xpath("./tr"));
  for(WebElement rowElement : listOfRows2){
      System.out.println("getText: " + rowElement.getText());
      //This if statement is to check whether the row has the element or not, otherwise it will throw an error
      if(rowElement.findElements(By.xpath(".//a[contains(text(),'unique_cell_name')]").size() !=0){
        String name = rowElement.findElement(By.xpath(".//a[contains(text(),'unique_cell_name')]")).getText();
        System.out.println("name : " + name);
        if(name.equals('unique_cell_name')){
            rowElement.findElement(By.xpath(".//a[contains(text(),'unique_cell_name_to_row_but_not_table')]")).doSomething();
            //also want to check text in a specific column 5, where the same text might exist in the same row in the different column
            rowElement.findElement(By.xpath(".//td[2]")).doSomething();
            break;
        }
      }
      else{
        System.out.println("This is not the row you are looking for");
      }
  }
于 2018-02-19T15:17:19.547 回答