如何验证Selenium IDE中按要求排序的结果,例如按字母顺序排序或ID减少

时间:2016-12-06 02:24:40

标签: selenium selenium-ide

我是Selenium IDE的新用户,我需要根据需要验证列表顺序。我们列出了从数据库中获得的一些记录。我知道我可以使用特定值创建两个记录,并使用verifyOrdered或assertOrdered实现它。但是我们有不同的排序顺序,例如按ID DESC排序或按字母顺序排列ASC,我们有分页工具,因此创建的两条记录可能不会显示在同一页面中。

那么有什么有用的方法可以在不知道值的情况下验证特定定位器列表的顺序,例如ID desc?提前谢谢。

1 个答案:

答案 0 :(得分:0)

检查列表时,结果第一页上的列表中至少有两项?

我测试了一个具有多种不同类型搜索结果的网站,并且测试可以验证所有类型的排序顺序。

  1. 您需要检查是否有某种方法可以验证列表的排序方向,ASC或DSC。检查可能类似的元素:“css = th.sortasc”或“css-th.sortdsc”,以某种方式验证方向。
  2. 一旦你能做到这一点,从列表中抓取任意两个值(可能是列表中的第一个值,然后是下一个或者在分页前再下一个),然后比较它们以验证一个大于或小于其他。
  3. 您可能需要对数据进行一些清理,具体取决于它是数字还是字符串。
  4. 我正在使用Selenium的RobotFramework来进行测试,这里有一些示例代码可以完成你正在做的事情。  {

    Click Element    ${Name_Column_Header} #clicks the header to sort the column. 
    Sleep    2s
    Element Should Be Visible    css=th.sortdsc > a   #verifies the sort caret is shown and it's descending. 
    #next 3 lines grab the text from the field (in this case, person names)
    ${Name1}    Get Text    css=td.ng-binding
    ${Name2}    Get Text    //tbody[2]/tr/td
    ${Name3}    Get Text    //tbody[3]/tr/td
    #next lines grab just the last name from each name, since list is sorted by last name. 
    ${N1}    Fetch From Right    ${Name1}    ${SPACE}
    ${N2}    Fetch From Right    ${Name2}    ${SPACE}
    ${N3}    Fetch From Right    ${Name3}    ${SPACE}
    #next two lines do the compare, verifying that the name in line 1 is greater than the name in line 2, and line 2 name is greater than line 3
    Should Be True    '${N1}' >= '${N2}'
    Should Be True    '${N2}' >= '${N3}'
    

    }

    在selenium IDE中,命令非常相似。

    {

    <!--Sort by name-->
    <tr>
        <td>clickAndWait</td>
        <td>link=Name</td>
        <td></td>
    </tr>
    <!--Grab values for name from 1st and 2nd row-->
    <tr>
        <td>storeText</td>
        <td><locator value>
        <td>1stRowName</td>
    </tr>
    
    <tr>
        <td>storeText</td>
        <td><locator value>
        <td>2ndRowName</td>
    </tr>
    <!--evaluate that 1st row name is less than or equal to 2nd row name-->
    <tr>
        <td>storeEval</td>
        <td>var isLess = false; isLess = eval(storedVars['1stRowName'] &lt;  storedVars['2ndRowName']);</td>
        <td>isLess</td>
    </tr>
    <tr>
        <td>verifyExpression</td>
        <td>${isLess}</td>
        <td>true</td>
    </tr>
    

    }

    希望这会有所帮助。 - Klendathu