我想验证此页面上是否有预期结果,但不断收到错误消息。任何帮助,不胜感激。
这是我正在运行的代码:
string ActualResult;
string ExpectedResult = "nH-brand-logo";
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl(" ");
driver.Manage().Window.Maximize();
driver.FindElement(By.Id("user_email")).SendKeys(" ");
driver.FindElement(By.Id("user_password")).SendKeys(" ");
driver.FindElement(By.Id("user_submit")).Click();
ActualResult = driver.FindElements(By.ClassName("nH-brand-logo"));
if (ActualResult.Contains(ExpectedResult))
{
Console.WriteLine("Test Case Passed");
}
else
{
Console.WriteLine("Test Case Failed");
}
driver.Close();
driver.Quit();
}
}
}
您发布的代码将无法编译,因为您已将ActualResult
声明为 string 类型的变量,并且FindElements
返回一个ReadOnlyCollection<IWebElement>
,这绝对不是字符串。
如果您想在页面上找到class
属性包含"nH-brand-logo"的任何元素,那么以下内容就足够了:
var elements = driver.FindElements(By.ClassName("nH-brand-logo"));
bool testPassed = elements.Count > 0;
通过以这种方式调用FindElements
方法,如果返回任何元素,则根据定义,它们都必须在其class
属性中包含该值。现在,如果您希望验证比这更复杂的内容,则完整的解决方案可能会按比例更复杂。
使用硒时要记住的事情:
- FindElement 查找元素或引发异常。如果元素不存在,则不会返回 null 或空值;它抛出。
- FindElements 返回所有匹配的元素,或者当没有元素满足查找条件时返回空列表。但是,您必须访问返回列表中的元素才能获取有关找到的任何单个元素的信息。
行
ActualResult = driver.FindElements(By.ClassName("nH-brand-logo"));
将返回 webElements 列表,然后您根据字符串对其进行验证。因此错误。
string ActualResult; string ExpectedResult = "nH-brand-logo"; if (ActualResult.Contains(ExpectedResult))
如果你想检查 ActualResults 的所有元素是否都包含"nH-brand-logo",那么你可以写
bool result = ActualResults.All(x=>x.GetAttribute("class").Contains('nH-brand-logo');
希望这有帮助。