Selenium框架使用C#关于assert语句

时间:2016-07-20 19:39:29

标签: c# selenium

我正在尝试提供已成功更新记录的确认消息

HTML是:

<div class="hide">
    <div class="fullRow">
    <div class="notice success">
        The user record has been updated.
        <a href="#close" class="icon-remove"/>
    </div>

我正在使用的C#代码是:

Assert.IsTrue(UserUpdateAdmin.IsAt, "Fialed to Update");

UserUpdateAdmin类包含以下内容:

public class UserUpdateAdmin
{
    public static bool IsAt
    {
        get
        {
            var h1 = Driver.Instance.FindElements(By.ClassName("notice.success"));
            if (h1.Count > 0)
                return true;
            return false;
        }

它抛出异常: 类型

的例外
  

&#39; Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException&#39;发生在Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll但未在用户代码中处理

     

其他信息:Assert.IsTrue失败。 Fialed to Update

2 个答案:

答案 0 :(得分:0)

您使用的是By.ClassName(),但它不能包含多个课程。您可以使用By.CssSelector()解决此问题。我也简化了你的代码。

public static bool IsAt
{
    get
    {
        return (Driver.Instance.FindElements(By.CssSelector("div.notice.success")).Count > 0);
    }
}

注意:您的错误消息中有拼写错误,应该是&#34;无法更新&#34;。

建议:始终使用{} s ...即使是1-liner if,请参见下文。它可以防止混淆等。

if (h1.Count > 0)
{
    return true;
}

答案 1 :(得分:-1)

如果您的类名包含空格,则按类名查找通常不起作用。尝试使用XPath:

var h1 = Driver.Instance.FindElements(By.XPath("//div[@class='notice success']"));