0

我用 selenium 在 c# 中为我的单元测试编写了这段代码来测试我的 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() 中进入无限循环,但退出并返回一个值。我刚刚尝试使用 keyDown、KeyPress 等……但它不起作用。谢谢你。

4

1 回答 1

1

我认为您正在使用的 XPath 正在进入无限循环。我会删除div 前面的斜线和斜线//form之间的空格//div

private const string XPathToolTipStyle = "//form[@action='search.aspx']/div[@id='searchToolTip']/@style";

我建议改变它的原因是

  1. 我认为它不是有效的 xpath
  2. //告诉 Xpath 搜索整个文档,因为你正在这样做告诉它搜索表单然后再次开始搜索 div 所以它然后进入奇怪的无限循环

记住 Selenium 支持 CSS 选择器,如果你可以使用它们,因为它会让你的 IE 测试运行得更快

于 2009-12-23T13:43:12.590 回答