这是我在 StackOverflow 上的第一篇文章,我希望我能够详细地提供整个问题。如果我需要提供任何其他信息,请告诉我。问题描述:我正在使用常规的面包屑导航,显示从一页到另一页的导航顺序。面包屑具有 html 格式的 id = “divbreadcrumb”。
例如:如果我从主页(Home)导航到预订页面(Bookings),那么导航如下:
首页 > 预订
我希望自动化我对面包屑的测试,并检查页面上显示的面包屑文本与它应该是的实际面包屑文本。我试图通过使用 selenium Webdriver 以及 ATDD 工具来实现这一点,即 Specflow/SpecRun 和 Nunit,使用下面提到的代码。
现在,当我尝试在本地运行测试时,它工作正常,但是当我将代码签入 TFS 并构建它时,VS Test Runner 构建失败,因为它无法从 IwebElement 元素中找到文本,或者它返回文本为 String.Empty。现在,当在我的本地机器上运行相同的测试时,可以很好地给出预期的测试结果和我的 Iwebelement 的预期值(用于面包屑)。此外,上面的面包屑的 HTML 结构正在后端呈现,我可以这么说是因为我试图查看它在运行时使用 webdriver 的 pagesource 属性呈现的 HTML,并将其显示在我的异常消息中。
此外,我的后端 HTML 代码显示为:
<div class="breadcrumb" >
<div class="breadcrumb-content" >
<div class="breadcrumb" id="divBreadcrumb" >
<a onclick="some code written here" href="xyz.com">Home</a>
> <a href="LMN.com">Bookings </a>
</div>
</div>
</div>
PFB 我在自动化脚本中用于检查来自页面上的面包屑的文本的代码:
public void TestingBreadcrumb(int p0)
{
InternetExplorerOptions IEOptions = new InternetExplorerOptions();
IEOptions.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IEOptions.IgnoreZoomLevel = true;
IEOptions.UnexpectedAlertBehavior = InternetExplorerUnexpectedAlertBehavior.Ignore;
IWebDriver iEDriver = new InternetExplorerDriver(IEOptions);
iEDriver.Manage().Window.Maximize();
iEDriver.Navigate().GoToUrl("http://example.com");
var breadcrumb = iEDriver.FindElement(By.Id("divBreadcrumb")).Text.ToString();
Assert.AreEqual("Home > Bookings ", breadcrumb);
}
我得到的错误是
[ERROR] Expected string length 18 but was 0. Strings differ at index 0. Expected: "Home > Bookings "
But was: <string.Empty>
-----------^