我在c#中用selenium为我的单元测试编写了这段代码来测试我的web应用程序。特别是我正在测试工具提示的窗口是否正确显示,按esc键后它会消失:
private const string XPathToolTipStyle = "//form[@action='search.aspx'] //div[@id='searchToolTip']/@style";
private bool IsToolTipOpen()
{
var tempToolTip = selenium.GetAttribute(XPathToolTipStyle);
return !(tempToolTip).ToLower().Contains("display: none;");
}
[Test]
public void PressEscAndCloseClosingKeys()
{
writeSomethingInTheInputBox();
Assert.That(IsToolTipOpen());
selenium.KeyPressNative("27"); //press esc
Assert.That(!IsToolTipOpen());
}
问题是在Internet Explorer中它可以正常工作,但在Firefox中,它在IsToolTipOpen()whitout exit中进入无限循环并返回一个值。我刚刚尝试使用keyDown,KeyPress等......但它不起作用。 谢谢。
答案 0 :(得分:1)
我认为你正在使用的XPath正在进入无限循环。我会删除//form
和//div
之间的空格以及div前面的一个斜杠
private const string XPathToolTipStyle = "//form[@action='search.aspx']/div[@id='searchToolTip']/@style";
我建议更改它的原因是
//
将告诉Xpath搜索整个文档,因为你正在做它告诉它搜索表单,然后再次开始搜索div,然后进入奇怪的无限循环< / LI>
醇>
请记住,Selenium支持CSS选择器,如果你可以使用它们,因为它会使你的IE测试更快地运行