我正在使用Watin进行UI测试(Watir,适用于java人)。我需要检查HTML中是否存在元素。截至今天,我这样做如下:
[FindBy(Id = "pnConfirmation")]
protected Div Confirmation;
public bool ConfirmationMessageDisplayed
{
get
{
try
{
return Confirmation.Text != "";
}
catch (ElementNotFoundException)
{
return false;
}
}
}
但这需要花费大量时间。有没有更有效的方法来做到这一点?
答案 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;
}