Имейте в виду, что , начиная с JMeter 3.1, рекомендуется использовать Groovy для сценариев , так что вы можете рассмотреть возможность переключения на Groovy и написания обычных явных ожиданий - существует множество примеров надв Интернете, на всякий случай, если вам нужен еще один:
import org.openqa.selenium.WebDriver
import org.openqa.selenium.support.ui.ExpectedCondition
import org.openqa.selenium.support.ui.WebDriverWait
WDS.sampleResult.sampleStart()
WDS.browser.get('http://example.com')
WebDriverWait wait = new WebDriverWait(WDS.browser, 15)
ExpectedCondition<Boolean> documentReady = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
return WDS.browser.executeScript("return document.readyState")
.toString().equalsIgnoreCase("COMPLETE");
}
};
wait.until(documentReady)
WDS.sampleResult.sampleEnd()
Если вам нужно перейти на JavaScript - все еще можно вызывать функции Java через, например, JavaAdapter объект, пример кода будет выглядеть примерно так:
load("nashorn:mozilla_compat.js")
var wait = new org.openqa.selenium.support.ui.WebDriverWait(WDS.browser, 15)
WDS.browser.get('http://example.com')
function Invoker(obj) {
return new JSAdapter() {
__has__: function(name) {
return true;
},
__get__: function(name) {
return function() {
return obj.invoke(name, arguments);
}
}
}
}
var r = {
invoke: function(name, args) {
return WDS.browser.executeScript("return document.readyState") == 'complete'
}
};
wait.until(new JavaAdapter(org.openqa.selenium.support.ui.ExpectedCondition, Invoker(r)))
Дополнительная информация: