java - 使用 selenium webdriver 处理多个表

标签 java selenium selenium-webdriver junit

我正在根据用户类型检查网页上的文件夹层次结构。 User1 拥有一组权限,使他能够查看如下所示的文件夹结构:

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

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

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

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

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

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 用于我的测试用例。我想做一个“断言”以确保第二个孙子不存在。

最佳答案

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

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

关于java - 使用 selenium webdriver 处理多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31526427/

相关文章:

java - Selenium WebDriver 在 Google 中不会关闭

playframework - 用于 Play Framework 的 Firefox Selenium webdriver : How to upgrade?

java - 使用 java 写入文件时输出无效

java - 如何将 iMacro 脚本移动到 Selenium?

java - 如何修复 "Exception in thread "main"java.lang.VerifyError : Cannot inherit from final class "error

python - Selenium 在 Mac 上给出 "selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary"

java - 如何查找/选择以下 Web 元素的 xpath?

java - Java中从字符串中心解析信息

java - 为什么我的碰撞检测无法正常工作?

java - org.apache.jasper.JasperException : Unable to compile class for JSP and java. io.FileNotFoundException : programs_jsp. java(权限被拒绝)