当前位置: 首页 > 知识库问答 >
问题:

Selenium是否通过另一个元素在表中查找一个元素?

黄浩涆
2023-03-14

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

这里的JavaSelenium代码查找一个表体。getText()准确地打印出每行中的文本,但s.findElement(xpath)除外。getText()将返回唯一的\u单元格\u名称,无论行是否包含该名称。并且if语句将在每个循环中输入。

我怎么修理它?为什么getText()返回正确的文本,但在同一行元素中找不到元素?

      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中与serenity/cucumber一起使用selenium 2.53。

共有1个答案

闻人昊昊
2023-03-14

这个问题发生在年。GrassHopper提到的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");
      }
  }
 类似资料:
  • 问题内容: 如何检查一个DOM元素是否是另一个DOM元素的子元素?有内置的方法吗?例如,类似: 要么 如果没有,那么有什么想法怎么做?它还需要跨浏览器。我还应该提到,孩子可以嵌套在父级以下的多个级别。 问题答案: 更新: 现在有一种本地方法可以实现此目的。。在评论中也提到了答案。 旧答案: 使用该属性应该可以。从跨浏览器的角度来看,它也是非常安全的。如果已知这种关系是一级的,则可以简单地检查一下:

  • 问题内容: 我正在尝试比较两个列表,如果第二个列表中有第一个列表中的任何值,则只打印一条消息。 在此示例中,我要对进行求值,因为两个列表中都包含5。这行不通,而且我不确定比较这两个列表的最简单方法。 问题答案: 您可以用很多方法解决。一个很容易理解的方法就是只使用一个循环。 一个更紧凑的方法是使用和: 更好的是,可以将其替换为: 您还可以使用集合:

  • 问题内容: 我有两个带有不同对象的列表。 我想检查list2中的元素是否存在于list2中,基于特定的属性(Object1和Object2具有(以及其他),一个共有属性(类型为Long),名为attributeSame)。 现在,我这样做是这样的: 但是我认为有一种更好,更快的方法可以做到这一点:)有人可以提出吗? 谢谢! 问题答案: 如果只需要测试基本相等性,则可以使用基本JDK来完成,而无需在

  • 我有两个不同对象的列表。 我想根据特定的属性(Object1和Object2有一个共同的属性(类型为Long),名为AttributeName),检查list2中是否存在list1中的元素。 现在,我是这样做的: 但我认为有更好更快的方法可以做到这一点:)有人能提出吗? 谢谢

  • 问题内容: 我有两个arraylist 我想检查a2中是否存在a1的所有元素。这是我正在尝试的问题 这没有给出一致的结果…还有其他方法可以做到吗? 问题答案: 不知道我是否正确理解了您的问题,为什么使用? 试过这个: 它输出 添加一个额外的元素将使它失败(如预期): 它输出

  • 问题内容: 我有两个数组,我想检查是否每个元素都在中。如果元素的值在中重复,则该元素的值必须相等。最好的方法是什么? 问题答案: 一种选择是对两个数组进行排序,然后遍历两个数组,然后比较元素。如果在超级袋中未找到子袋候选中的元素,则前者不是子袋。排序通常为O(n *log(n)),比较为O(max(s,t)),其中 s 和_t_是数组大小,总时间复杂度为O(m * log(m)) ,其中m =ma