+-

我需要等到 javascript的结果匹配字符串或布尔值.
有了这个javascript:
document.getElementById('video_html5').seeking;
我得到一个“假”/“真”值,我需要等到值为“假”,所以我确定视频没有寻求,但我只找到了等待javascript命令值的方法而不是检查值是否与某些文本匹配的方法.
new WebDriverWait(driver, 30)
.until(ExpectedConditions.jsReturnsValue("return document.getElementById('video_html5').seeking;"));
因为在某些情况下我得到的字符串不是布尔值,需要比较这些字符串.
我已经找到了如何在Ruby中实现它而不是在Java中:
wait_element = @wait.until { @driver.execute_script("return document.getElementById('vid1_html5_api_Shaka_api').seeking;").eql? false }
最佳答案
您可以编写自己的自定义预期条件.
public class MyCustomConditions {
public static ExpectedCondition<Boolean> myCustomCondition() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return (Boolean) ((JavascriptExecutor) driver)
.executeScript("return document.getElementById('video_html5').seeking === 'string_value' || ... ");
}
};
}
}
然后在您的测试中,您可以使用以下条件.
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(MyCustomConditions.myCustomCondition());
点击查看更多相关文章
转载注明原文:Selenium – 等到返回的javascript脚本值匹配值 - 乐贴网