AJAX または CSS の変更により、テストが失敗する場合がありました。これらのメソッドを静的ドライバー インスタンスに追加して、必要に応じて特定の条件でテストを待機させることができるようにしました。(c#)
WaitForCssChange メソッドの TimedWait は基本的に単なるものです。Threading.Thread.Sleep
これは私が推測する最も美しい方法ではありませんが、私のニーズにはうまく機能します。
Ajax 待機の場合:
public static void WaitForAjax()
{
var wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(25));
wait.Until(d => (bool)(d as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0"));
}
CSS の変更の場合:
public static void WaitForCssChange(IWebElement element, string value)
{
int counter = 0;
while (true)
{
if(element.GetAttribute("style").Contains(value) || counter > 50)
{
break;
}
TimedWait(20);
counter++;
}
}