如果 Selenium Java 中的“文本”匹配,如何获取动态表中的特定行值

Posted

技术标签:

【中文标题】如果 Selenium Java 中的“文本”匹配,如何获取动态表中的特定行值【英文标题】:How to get particular row values in dynamic table if the 'text ' matches in Selenium Java 【发布时间】:2022-01-21 10:24:36 【问题描述】:

我可以打印 webtable 中的所有值,但不确定如何获取特定的行值。

这里我需要打印文本匹配“Aiden”的相应行值,因为 Aiden 文本可能显示在没有固定位置的任何行号中。

 driver.get("https://demoqa.com/elements");

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
              
//clicking the left menu

              driver.findElement(By.xpath("//span[text()='Web Tables']")).click(); 
                      
              //driver.findElement(By.xpath("//div[@class='rt-table']")).click();
              Thread.sleep(5000);

// selecting the table      
      
              WebElement table = driver.findElement(By.xpath("//div[@class='rt-table']"));  

//selecting the table header    
      
                List<WebElement> tableheaders = table.findElements(By.xpath("//div[@class='rt-thead -header']"));  

//printing all the table header values
                
                for (WebElement headername : tableheaders)    
                    String text = headername.getText();
                    System.out.println(text);
                

//selecting all row values
                        
                List<WebElement> allrows = table.findElements(By.xpath("//div[@role='row' and @class='rt-tr -odd' or @class='rt-tr -even']")); 

// total row count

                int size = allrows.size();
                System.out.println("Rows size: "+size); 

// selecting all column values      
        
                for (int colnum = 0; colnum < size; colnum++) 
                    List<WebElement> colums = table.findElements(By.xpath("//div[@class='rt-td' and @role='gridcell'] /..")); 
                    WebElement firstColumn = colums.get(colnum);
                    System.out.println(firstColumn.getText());
                

【问题讨论】:

【参考方案1】:

您可以创建一个空字符串变量并在该行包含给定关键字时为其赋值

        String rowValue = "";
        for (WebElement webElement : tableRows) 
            if (webElement.getText().contains(searchedValue)) 
                rowValue = webElement.getText();
            
        
        System.out.println(rowValue);


  

【讨论】:

以上是关于如果 Selenium Java 中的“文本”匹配,如何获取动态表中的特定行值的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Selenium Java 提取手风琴中的段落文本

如果我通过 Selenium Webdriver 和 Java 知道相应的文本,如何提取 DOM 元素的 ID 属性

selenium模糊匹配控件

如何使用selenium Webdriver验证页面中是否存在重复文本

Java正则之Unicode属性匹配的那些事

Java正则之Unicode属性匹配的那些事