检查HTML元素是否存在

时间:2010-10-29 08:51:36

标签: c# automated-tests watin

我正在使用Watin进行UI测试(Watir,适用于java人)。我需要检查HTML中是否存在元素。截至今天,我这样做如下:

    [FindBy(Id = "pnConfirmation")]
    protected Div Confirmation;

    public bool ConfirmationMessageDisplayed
    {
        get
        {
            try
            {
                return Confirmation.Text != "";
            }
            catch (ElementNotFoundException)
            {
                return false;
            }
        }
    }

但这需要花费大量时间。有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:5)

每次调用Confirmation.Text WatiN都会等到元素存在。在那段时间之后ElementNotFoundException被抛出。默认情况下,WatiN等待30秒才能显示元素。可以通过设置Settings.WaitUntilExistsTimeOut

的值来更改此设置

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

return Confirmation.Text != "";

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

但是你必须记住,即使这个元素在1秒后出现,它也会返回false。如果您想使用该解决方案,我认为您不必捕获此异常,如果您确定,一旦它存在,它将不会被删除。

您当然可以更改Settings.WaitUntilExistsTimeOut的值。如果您不想更改此值,但又想稍等一下,可以使用以下代码替换您的getter:

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