c# - Selenium-元素在点 (403, 697) 处不可点击。其他元素会收到点击
问题描述
我正在尝试使用硒进行测试。我想单击一个按钮,但我有一个加载程序,它在消失之前等待几秒钟。
覆盖其他元素的加载器元素。您可以在此处查看加载器在我的页面中的外观。所以我需要帮助来找到一种方法来等到这个加载器消失才能继续我的测试
错误:
OpenQA.Selenium.WebDriverException
HResult=0x80131500
Message=unknown error: Element <select _ngcontent-c4="" class="col-xs-8 custom-input-styles custom-select ng-touched ng-dirty ng-valid" formcontrolname="organizationType">...</select> is not clickable at point (441, 620). Other element would receive the click: <div _ngcontent-c2="" class="loader-wrapper ng-trigger ng-trigger-visibilityChanged ng-animating" style="">...</div>
(Session info: chrome=68.0.3440.106)
(Driver info: chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),platform=Windows NT 10.0.17134 x86_64)
Source=WebDriver
StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebElement.Click()
at BnI.UITests.Register.TheProceedRedirectTest() in C:\Users\me\UITests\Register.cs:line 86
解决方案
你只需要等待 jquery 完成它的工作。这是我提出的解决方案的示例 java 实现。
我不使用 WebDriverWait,因为我必须定义一个 TimeOut。即使需要 10 分钟,此脚本也会等待 jquery 完成其工作。我在一个演示网站上试过这个,我预先配置了一个 7 分钟的硬编码等待。它对我有用。
//Wait for JQuery Load
public static void waitForJQueryLoad() {
//Wait for jQuery to load
ExpectedCondition<Boolean> jQueryLoad = driver -> ((Long) ((JavascriptExecutor) jsWaitDriver)
.executeScript("return jQuery.active") == 0);
//Get JQuery is Ready
boolean jqueryReady = (Boolean) jsExec.executeScript("return jQuery.active==0");
//Wait JQuery until it is Ready!
if(!jqueryReady) {
System.out.println("JQuery is NOT Ready!");
//Wait for jQuery to load
jsWait.until(jQueryLoad);
} else {
System.out.println("JQuery is Ready!");
}
}
如果它不是 JQuery 的话。只需查看该网站中提供的示例 ( https://www.swtestacademy.com/selenium-wait-javascript-angular-ajax/ )。你也可能最终得到 Angular、JQuery 和 XHR 请求解决方案。
推荐阅读
- couchdb - 无法在 _users DB 中创建用户文档
- r - 对于来自 {Matrix} 的稀疏矩阵,是否有带有 R 函数 duplicated() 的方法?
- python - 为什么 SQLAlchemy 关系 primaryjoin 在另一个会话中不受尊重?
- r - df into 根据 R 中的列值列出名称
- c# - 如何使用 ASP.NET Core 2.1 从服务器发送 UDP 消息?
- c# - 我已经编写了文件是否存在的逻辑。(读取excel中的文件名并检查文件是否存在于另一个文件夹中)
- python - 如何更改 OpenCv 中高斯自适应阈值的权重?
- ruby-on-rails - Unicorn (4.9.0) + Rails (2.2.2) 总是给我相同的 session_id - 你知道如何解决这个问题吗?
- intellij-idea - 无法执行目标 net.alchim31.maven:scala-maven-plugin:3.2.0:compile (scala-compile)
- javascript - node.js 使用两个具有不同端口的套接字