Gkm*_*Gkm 5 selenium timeoutexception selenium-webdriver azure-devops azure-pipelines
单击按钮后未找到链接或任何验证消息,测试用例就会失败。
我使用显式等待页面加载:
var waitForDocumentReady = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(10));
waitForDocumentReady.Until((wdriver) => (WebDriver as IJavaScriptExecutor).ExecuteScript("return document.readyState").Equals("complete"));
Run Code Online (Sandbox Code Playgroud)
对于等待验证消息的特定 div:
WebDriverWait wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(10));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.ClassName("validationErrors")));
Run Code Online (Sandbox Code Playgroud)
但测试用例有时会通过管道,有时会失败。
您需要注意以下几点:
单击按钮后未找到链接或任何验证消息时测试用例会失败:很大程度上取决于按钮的属性。如果按钮包含以下任一属性/事件,DOM 树将被更新,随后尝试查找所需的元素可能会失败:
onclick()事件:
<button onclick="myFunction()">Click me</button>
Run Code Online (Sandbox Code Playgroud)$("p").click(function(){
alert("The paragraph was clicked.");
});
Run Code Online (Sandbox Code Playgroud)因此,单击按钮后,要找到需要引发的所需元素,您必须引发WebDriverWaitElementExists()。
ExecuteScript("return document.readyState").Equals("complete"):这行代码并不能有效地确保所需元素是否在HTML DOM中存在/可见/可交互。
ElementExists()应该可以工作。相关的 HTML 可以帮助我们分析出了什么问题。但是,如果与validationErrors相关的元素基于HTML5约束验证,那么您必须使用GetAttribute()方法。
| 归档时间: |
|
| 查看次数: |
3981 次 |
| 最近记录: |