WebDriver Sampler中等待元素显示功能失效问题求助
问题根因分析
- 错误使用
By.className()方法:className()仅支持传入单个类名,不支持带.前缀,也不支持多个类名拼接的字符串,你传入的.dataTables_wrapper.form-inline.dt-bootstrap.no-footer是CSS选择器语法,需要使用By.cssSelector()方法调用才会生效。 - 自定义循环等待逻辑冲突:外层while循环设置的最大等待时长为5秒,但异常捕获块中每次重试休眠2秒,最多只能重试2次就会触发循环超时,和你设置的最大重试10次的逻辑完全冲突。
- 显式等待调用逻辑错误:你尝试的
wait.until写法未正确初始化WebDriverWait实例,也未正确导入ExpectedConditions类,代码中出现的pkg变量无定义。
修复后的可运行代码
// 导入所需类 var selenium = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui) var wait = new selenium.WebDriverWait(WDS.browser, 10) // 设置最大等待时长10秒 WDS.sampleResult.sampleStart() WDS.browser.get("https://<some_url>/mrlb/f4d7f910-03bf-4c6f-93aa-0d47d7ec5afd") try { // 使用cssSelector定位多类元素,等待元素可见 wait.until(selenium.ExpectedConditions.visibilityOfElementLocated( selenium.By.cssSelector(".dataTables_wrapper.form-inline.dt-bootstrap.no-footer") )) WDS.log.info("表格加载完成") } catch (e) { WDS.log.error("10秒内表格未加载完成:" + e.message) WDS.sampleResult.setSuccessful(false) WDS.sampleResult.setResponseMessage("表格加载超时") } WDS.sampleResult.sampleEnd()
补充说明
如果需要等待元素可点击再操作,把visibilityOfElementLocated替换为elementToBeClickable即可,显式等待会自动每500ms轮询检测元素状态,不需要自己写循环和休眠逻辑。
内容的提问来源于stack exchange,提问作者user16796989
相关产品推荐
相关产品推荐

