при использовании селена + Ajax (или страница просто обновляется при определенных условиях).
Я обычно использую:
selenium.WaitForCondition
или я недавно создал следующий код (страница использует фреймы).
public bool AccessElementsOnDynamicPage(string frame, Predicate<SeleniumWrapper> condition)
{
DateTime currentTime = DateTime.Now;
DateTime timeOutTime = currentTime.AddMinutes(6);
while (currentTime < timeOutTime)
{
try
{
SelectSubFrame(frame);
if (condition(this))
return true;
}
catch (SeleniumException)
{
//TODO: log exception
}
finally
{
currentTime = DateTime.Now;
}
}
return false;
}
public bool WaitUntilIsElementPresent(string frame, string locator)
{
return AccessElementsOnDynamicPage(frame, delegate(SeleniumWrapper w)
{
return w.IsElementPresent(locator);
});
}
public bool WaitUntilIsTextPresent(string frame, string pattern)
{
return AccessElementsOnDynamicPage(frame, delegate(SeleniumWrapper w)
{
return w.IsTextPresent(pattern);
});
}
Вскоре вы дойдете до того, что вам потребуется Selen RC, интегрированный в вашу среду разработки, для этого я рекомендую вам прочитать:
Как я могу сделать свои тесты Selenium менее хрупкими?
Это ожидание, но для определенных элементов, которые должны (или появиться) на странице.