代码之家  ›  专栏  ›  技术社区  ›  Luk

检查HTML元素是否不存在

  •  2
  • Luk  · 技术社区  · 14 年前

    我正在使用Watin(Watir,为java用户)进行UI测试。我需要检查HTML中是否没有元素。从今天起,我按如下方式进行:

        [FindBy(Id = "pnConfirmation")]
        protected Div Confirmation;
    
        public bool ConfirmationMessageDisplayed
        {
            get
            {
                try
                {
                    return Confirmation.Text != "";
                }
                catch (ElementNotFoundException)
                {
                    return false;
                }
            }
        }
    

    但这要花很多时间。有没有更有效的方法来做到这一点?

    1 回复  |  直到 14 年前
        1
  •  5
  •   prostynick    14 年前

    每次你打电话 Confirmation.Text WatiN等待元素存在。之后 ElementNotFoundException 被扔了。默认情况下,WatiN等待30秒元素显示。可以通过设置 Settings.WaitUntilExistsTimeOut

    为了解决你的问题,你可以做几件事。例如,可以更改此行:

    return Confirmation.Text != "";
    

    return Confirmation.Exists && Confirmation.Text != "";
    

    但你要记住这会回来的 false 即使这个元素在1秒后出现。如果你想使用这个解决方案,我认为你不必捕捉这个异常,如果你确定,一旦它出现,它将不会被删除。

    你当然可以改变 Settings.waituntilexistimeout设置 . 如果不想更改此值,但只想稍等片刻,可以使用以下代码替换getter:

    try
    {
        Confirmation.WaitUntilExists(1); //Wait only one second
        return Confirmation.Text != "";
    }
    catch (WatiN.Core.Exceptions.TimeoutException) //Different exception!
    {
        return false;
    }