Jmeter WebDriver Sampler中的“ return document.readyState”,在JavaScript中

时间:2019-02-02 11:04:43

标签: javascript selenium-webdriver jmeter selenium-chromedriver jmeter-plugins

我在硒和WDS在JMeter中相当新的,所以请帮助我。 我不会写代码,等到整个页面加载。我发现像“return document.readyState”,但我不能在我的代码做到这一点。所以我说 - 我在这一片绿色

我有“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();

1 个答案:

答案 0 :(得分:0)

请注意since JMeter 3.1 it is recommended to use Groovy for scripting,因此您可以考虑切换到Groovy并编写普通的explicit waits-网络上有很多示例,以防万一您需要更多示例:

Memory<ushort>

如果您必须使用JavaScript -仍然可以通过JavaAdapter对象调用Java函数,示例代码将类似于:

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()

更多信息: