當從selenium ide生成NUnit
代碼時,等待命令(如clickAndWait
)使用循環生成一個尷尬模式。Selenium IDE生成的代碼不使用WebDriverWait.Ontil
使用WebDriverWait.until
不是更好嗎?
還是我錯了?
更新: 對不起,從內存中寫道,我所指的代碼是waitForElement
命令,而不是clickAndWait
。
這是我指的是代碼:
// waitForElementPresent | id=id |
for (int second = 0; ; second++)
{
if (second >= 60) Assert.Fail("timeout");
try
{
if (IsElementPresent(By.Id("id"))) break;
}
catch (Exception)
{ }
Thread.Sleep(1000);
}
private bool IsElementPresent(By by)
{
try
{
driver.FindElement(by);
return true;
}
catch (NoSuchElementException)
{
return false;
}
}
閱讀各種指南和其他的答案,在我看來,一個更好的解決辦法是這樣:
// waitForElementPresent | id=id |
if (!WaitForElementPresent(By.Id("id"))) { Assert.Fail(); }
private bool WaitForElementPresent(By by)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
try
{
wait.Until(drv => drv.FindElement(by));
return true;
}
catch (Exception)
{
return false;
}
}
你是什麼意思的東西錯誤?你可以expalin更多的示例代碼? –
澄清了這個問題,還有一個錯誤,我指的是clickAndWait類型的命令,而它在waitForElement命令 – SilverXXX
並且是這個問題?我的意思是有任何錯誤? –