我想让测试等到页面正确加载后再继续下一步。我用了等到,但是,
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(time));
var elements = wait.Until(x => x.FindElements(by));
当数据尚未完全加载时,我面临元素存在的问题。这使得测试失败。我不想使用Thread.Sleep(时间);因为这不是解决这个问题的好方法。
是否有类似jQuery提供的选项,如“jQuery.active”
我正在使用C#和webdriver 3来编写该测试。我想进行测试以等待页面完成加载,并且在继续下一步之前完成所有HTTP调用是否有任何方法可以做到这一点?提前谢谢
答案 0 :(得分:0)
在页面的动态部分中查找元素并等待它。我一直都这样做,效果很好。
答案 1 :(得分:0)
可以使用以下代码
跟踪HTTP调用var javaScriptExecutor = Browser.Driver as IJavaScriptExecutor;
Browser.Driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(5);
return javaScriptExecutor?.ExecuteAsyncScript("var cb = arguments[arguments.length - 1];" +
"if (window.webpackJsonp && document.querySelector('[aurelia-app]')) { cb('Aurelia composed') }" +
"document.addEventListener('aurelia-http-client-requests-drained', function (e) {" +
" cb('aurelia-http-client-requests-drained')" +
"}, false);");
上面的代码使用事件aurelia-http-client-requests-drained
,该事件在所有HTTP请求耗尽时触发
要知道页面是否合成,可以使用以下代码
var javaScriptExecutor = Browser.Driver as IJavaScriptExecutor;
Browser.Driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(5);
return javaScriptExecutor?.ExecuteAsyncScript("var cb = arguments[arguments.length - 1];" +
"if (window.webpackJsonp && document.querySelector('[aurelia-app]')) { cb('Aurelia composed') }" +
"document.addEventListener('aurelia-composed', function (e) {" +
" cb('Aurelia App composed')" +
"}, false);");
这利用了aurelia-composed