我在硒和WDS在JMeter中相当新的,所以请帮助我。我不会写代码,等到整个页面加载。我发现类似“return document.readyState
”,但我不能这样做在我的代码。所以我说 - 我在这一片绿色。
我在我的代码“qazxsw芋泥”,但它是不够的。
wait
要知道,var pkg = JavaImporter(org.openqa.selenium); //WebDriver classes
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait); //WebDriver classes
var wait = new support_ui.WebDriverWait(WDS.browser, 10000);
var conditions = org.openqa.selenium.support.ui.ExpectedConditions;
WDS.sampleResult.sampleStart(); //captures sampler's start time
WDS.sampleResult.getLatency();
WDS.log.info("Sample started");
WDS.browser.get('https://somethingsomething');
wait.until(conditions.elementToBeClickable(pkg.By.xpath("//a[@href='x']")));
WDS.log.info("Sample ended - navigated to somethingsomething");
WDS.sampleResult.sampleEnd();
所以也可以考虑转换到Groovy和写作正常since JMeter 3.1 it is recommended to use Groovy for scripting - 有一个狗屎吨的通过网络的例子,为了以防万一,如果你需要一个更多:
explicit waits
如果你必须去JavaScript的 - 它仍然有可能通过即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()
对象调用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)))