如何遍历表并单击元素

时间:2018-03-07 23:22:55

标签: java selenium

ScreenShot

如何在表格中循环并单击元素?我需要点击屏幕截图中突出显示的类。

这是我到目前为止的代码。

WebElement table1 = driver.findElement(By.className("rptDataOverlayPanelContent"));
List<WebElement> allrows1 = table1.findElements(By.tagName("tr"));

for(WebElement row1: allrows1){
    List<WebElement> Cells = row1.findElements(By.tagName("td"));
    for(WebElement Cell:Cells){
     if (Cell.getClass().equals("sp-preview-inner")) {
            Cell.click(); 
        }          
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码存在问题Cell.getClass()。它没有返回DOM元素的Selenium相关class属性,它返回 Java类,因此在这种情况下为Class<WebElement>。您实际在此处调用的方法是Object#getClass

要使用Selenium检索WebElement的DOM类属性,您应该使用

cell.getAttribute("class") // Will return a String, like "sp-preview-inner"

代替。以下是官方documentation的方法。这是相关的摘录:

  

获取元素的给定属性的值。将返回当前值,即使在页面加载后已经修改了该值。

     

如果给定的名称是&#34; &#34;,则&#34; className &#34;财产归还。

或者,您可以按类名直接搜索元素:

// Find all div elements with class "sp-preview-inner"
List<WebElement> elements = driver.findElements(
    By.cssSelector("div[class='sp-preview-inner']"));

// Click all of them
elements.forEach(WebElement::click);