【问题标题】:Verifying child elements under a specific class in Selenium Web Driver (Code in C#)在 Selenium Web Driver 中验证特定类下的子元素(C# 中的代码)
【发布时间】:2014-01-28 22:04:02
【问题描述】:

我的网站中有一个选项字段,其中有两个子选项。一个是更改密码,另一个是注销。我想验证这两个选项是否按顺序可用。这意味着第一个选项应该是更改密码,第二个选项应该是注销。这是该部分的 HTML:

<div class="user-options-container">
<div class="user-options-header">OPTIONS</div>
<div class="user-options">
<div class="user-options-item" action="changepwd">Change Password</div>
<div class="user-options-item" action="logout">Logout</div>
</div>
</div>

我怎样才能做到这一点?我所知道的是我可以让他们创建一个 IWebElement 类的列表,然后验证这些元素。但是,对如何做到这一点感到困惑。我使用 Selenium Web Driver 2 和 C# 作为我的语言。

【问题讨论】:

    标签: c# selenium


    【解决方案1】:

    提供有关 Java 的快速解决方案。但类似的 api 应该在 C# 中。

    这样怎么样。对于 HTML:

    <div class="user-options-item" action="changepwd">Change Password</div>
    <div class="user-options-item" action="logout">Logout</div>
    

    像这样获取两个 WebElement:

     List<WebElement> elements =  driver.findByElements(By.class("user-options-item"))
    

    然后你可以得到如下元素的文本:

    elements.get(0).getText() //Change Password
    elements.get(1).getText() //Logout
    

    并检查他们的订单。这应该适用于给定的代码,但如果同一个类也被其他元素共享,那么顺序将会改变。

    【讨论】:

    • 我使用 IWebElement 来获取子选项,发现他们给了 Count = 2;这意味着有 2 个选项可用。但我绝对无法验证他们的立场!!实际上我的目的是查看第一个选项中是否有更改密码字段,第二个选项中是否有注销字段。
    • 由于 elements.get(0) 不适用于 C#,我尝试使用 elements[0].Text 但这没有输出。控制台中只有一个空白(我试图在控制台中打印)
    • @Rasam:是的,我说得对,类可以用于 HTML 中的许多元素。在您的情况下,元素 1st 可能不是 Change Password。您对公共站点的测试?可以分享一下链接吗?
    • 好吧,我终于解决了这个问题。实际上,当我将鼠标悬停在该选项上时,该选项已启用。这就是为什么它没有给出文本输出。我使用 Actions 类,它很容易解决问题。谢谢您的帮助 !并在我的计算机上托管一个项目。实际上不是公共网站。
    猜你喜欢
    • 2013-09-17
    • 2017-08-31
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多