2016-08-13 101 views
0

要求是验证下表的列顺序与列标题名称的顺序是否正确。验证来自硒的表列顺序

因此,我已经写下来掩盖我的要求,它接受在所要求的顺序表标题名称的数组列表[字符串]的方法。

但它显然不通过软认定为“isDisplayed()方法总是返回“假”做我的要求。

任何人都可以建议我恳请进一步指出修改并把它固定的吗?

为表HTLM代码:

<table id="examMarkEntryExamList" class="display table table-bordered table-striped dynamic-table display_header_class"> 
    <thead> 
     <tr> 
      <th class="text-center sortable sorted order1">Academic Year</th> 
      <th class="text-center sortable sorted order1">Curriculum</th> 
      <th class="text-center sortable sorted order1">Grade</th> 
      <th class="text-center sortable sorted order1">Semester/Term</th> 
      <th class="text-center sortable sorted order1"> 
       <a class="pagination-cuser-point">Exam Code</a> 
      </th> 
      <th class="text-center sortable sorted order1">Actions</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr class="odd"> 
      <td>2016-2016</td> 
      <td>LOCAL</td> 
      <td>GRADE11</td> 
      <td>2nd Term</td> 
      <td>G11SecondTerm</td> 
      <td> 
     </tr> 
    </tbody> 
</table> 

硒【JAVA]的方法来验证列的顺序

public void verifyColumnOrder(WebDriver driver, String tableId, ArrayList<String> columnHeaderList) { 

     SoftAssert softassert = new SoftAssert(); 
     String relativeXpath = "//table[contains(@id,'"+tableId+"')]/"; 
     for (String columnHeader : columnHeaderList) { 

      relativeXpath = relativeXpath + "/following-sibling::th[contains(.,'" + columnHeader + "')]"; 
      softassert.assertTrue(driver.findElement(By.xpath(relativeXpath)).isDisplayed()); 
    } 
    softassert.assertAll(); 
} 

回答

0

您正在使用XPath不正确。这不是表格标签的兄弟姐妹。它内部有两层。

尝试此CSS定位器 - “表[ID = 'examMarkEntryExamList'] TH”。你可以直接使用By.cssSelector或xpath“// table [@ id ='examMarkEntryExamList'] // th”。

使用此定位获得webelements的名单。由此得到th标签中的文本列表。

List<WebElement> thelem = driver.findElements(By.xpath....); 
List<String> thText = thelem.stream().map(e -> e.getText()).collect(toList()); 

就断言 - `softassert.assertTrue(thText.equals(columnheaders));

请检查实际语法。

1

的其他解决办法是直接得到的thead文本与getText()。它将返回所有可见标题的连接,这将更易于比较:

public void verifyColumnOrder(WebDriver driver, String tableId, ArrayList<String> columnHeaderList) { 

    String expectedHeaders = String.join(" ", columnHeaderList); 
    String visibleHeaders = driver.findElement(By.cssSelector("[id='" + tableId + "'] thead")).getText(); 

    Assert.assertEquals(visibleHeaders, expectedHeaders); 
} 
+0

将findElements更改为findElement。否则,你将在不能编译的列表上调用getText()。否则在getText – Grasshopper

+0

@Grasshoppe之前追加'[0]',谢谢。 –