【问题标题】:Handling multiple tables using selenium webdriver使用 selenium webdriver 处理多个表
【发布时间】:2015-07-20 21:10:58
【问题描述】:

我正在检查网页上的文件夹层次结构,具体取决于用户类型。 User1 有一组权限,使他能够看到这样的文件夹结构:

Main Folder
    - First Child
        -First Grandchild
        -Second Grandchild
    - Second Child
    - Third Child

树的每个分支都是一个由 1 行组成的表。但列数因代而异。

“主文件夹”父级只有 1 列。单元格内容是字符串“主文件夹”。

子分支有 2 列,第一个单元格包含空格,下一个单元格包含分支名称(“第一个孩子”、“第二个孩子”)。

孙子分支有 3 列,第一个和第二个单元格包含空格,第三个单元格包含分支名称(“第一个孙子”、“第二个孙子”)。

HTML 代码:

<div id = 0>
    <div id = 1>
    <table id = 1>
    <tbody>
        <tr>
            <td id="content1" 
                <a id="label1" 
                <span id="treeNode1"  
                Main Folder
                </span>
                </a>
           </td>
       </tr>
    </tbody>
    </table>

            <div id = 2>
            <table id = 2>
            <tbody>
                 <tr>
                    <td>    
                    <td id="content2" 
                        <a id="label2" 
                        <span id="treeNode2"  
                            First Child 
                        </span>
                        </a>
                    </td>
                    </td>
                 </tr>
           </tbody>
           </table>

                    <div id = 5>
                    <table id = 5>
                    <tbody>
                         <tr>
                            <td>
                            <td>
                            <td id="content5" 
                                <a id="label5" 
                                <span id="treeNode5"  
                                    First GrandChild 
                                </span>
                                </a>
                            </td>
                            </td>
                            </td>
                         </tr>
                  </tbody>
                  </table>
                  </div>

                    <div id = 6>
                    <table id = 6>
                    <tbody>
                         <tr>
                            <td>
                            <td>
                            <td id="content6" 
                                <a id="label6" 
                                <span id="treeNode6"  
                                    Second GrandChild 
                                </span>
                                </a>
                            </td>
                            </td>
                            </td>
                       </tr>
                </tbody>
                </table>
                </div>
            </div> /* End of division 2 */


            <div id = 3>
            <table id = 3>
            <tbody>
                 <tr>
                        <td>
                        <td id="content3" 
                            <a id="label3" 
                            <span id="treeNode3"  
                                Second Child 
                            </span>
                            </a>
                       </td>
                       </td>
                </tr>
            </tbody>
            </table>
            </div>


            <div id = 4>
            <table id = 4>
            <tbody>
            <tr>
                        <td>
                        <td id="content4" 
                            <a id="label4" 
                            <span id="treeNode4"  
                                Third Child 
                            </span>
                            </a>
                        </td>
                        </td>
            </tr>
          </tbody>
          </table>
          </div>

    </div> /*End of division 1 */
</div> /* End of division 0 */

User2 有一组不同的权限,这使他能够看到这样的文件夹结构:

Main Folder
    - First Child
        -First Grandchild
    - Second Child
    - Third Child

该用户的 html 代码中没有对应的表格。

我的测试用例是检查 User2 无权访问第二个孙子。这意味着我需要确保网页上不存在该特定表格。

如何在 selenium 中检查这个?我正在为我的测试用例使用 JUnit。我想做一个“断言”以确保第二个孙子不存在。

【问题讨论】:

    标签: java selenium selenium-webdriver junit


    【解决方案1】:

    您需要检查该元素是否不存在或不可见。在 assert false 中调用 isElementVisible() 应该可以解决问题。只需获取要检查的元素的 By 定位器即可。

    private boolean isElementVisible(By by)
    {
        try
        {
            return driver.findElement(by).isDisplayed();
        }
        catch(NoSuchElementException e)
        {
            return false;
        }
    }
    

    【讨论】:

    • 谢谢。会试试这个。
    • 嗯,最好在 catch 块之外返回 false,以防元素不可见但被发现。
    • @Karthik 如果找到元素并且不可见 isDisplayed() 将返回 false。
    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 2013-07-19
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多