硒';s JavascriptExecutor在JMeter的JSR223采样器中不工作
我想实时测量网页的性能。因此,获得了第一个选择的JMeter与硒 我能够使用Java中的JSR223采样器进行一些导航和单击操作 但是,在等待所有JQuery和DOM就绪状态时,我在Javascript Executor(org.openqa.selenium.JavascriptExecutor)中没有这样做。下面是我的等待语句代码硒';s JavascriptExecutor在JMeter的JSR223采样器中不工作,javascript,selenium,jmeter,performance-testing,blazemeter,Javascript,Selenium,Jmeter,Performance Testing,Blazemeter,我想实时测量网页的性能。因此,获得了第一个选择的JMeter与硒 我能够使用Java中的JSR223采样器进行一些导航和单击操作 但是,在等待所有JQuery和DOM就绪状态时,我在Javascript Executor(org.openqa.selenium.JavascriptExecutor)中没有这样做。下面是我的等待语句代码 setStrictJava(false); /* ---some block of code--- */ while(true){ Boolean
setStrictJava(false);
/*
---some block of code---
*/
while(true){
Boolean isAjaxCompletes = (Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0;");
Boolean isJsLoaded = ((JavascriptExecutor)driver).executeScript("return document.readyState;").toString().equals("complete");
if(isAjaxCompletes && isJsLoaded){
break;
}
}
我得到以下错误:
2018-04-02 18:39:33,794 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: Sourced file: inline evaluation of: ``import org.openqa.selenium.Platform; import org.openqa.selenium.WebDriver; impor . . . '' : Error in method invocation: Static method executeScript( java.lang.String ) not found in class'org.openqa.selenium.JavascriptExecutor' : at Line: 36 :
in file: inline evaluation of: ``import org.openqa.selenium.Platform; import org.openqa.selenium.WebDriver; impor . . . '' : JavascriptExecutor .executeScript ( "return jQuery.active == 0;" )
in inline evaluation of: ``import org.openqa.selenium.Platform; import org.openqa.selenium.WebDriver; impor . . . '' at line number 36
javax.script.ScriptException: Sourced file: inline evaluation of: ``import org.openqa.selenium.Platform; import org.openqa.selenium.WebDriver; impor . . . '' : Error in method invocation: Static method executeScript( java.lang.String ) not found in class'org.openqa.selenium.JavascriptExecutor' : at Line: 36 : in file: inline evaluation of: ``import org.openqa.selenium.Platform; import org.openqa.selenium.WebDriver; impor . . . '' : JavascriptExecutor .executeScript ( "return jQuery.active == 0;" )
in inline evaluation of: ``import org.openqa.selenium.Platform; import org.openqa.selenium.WebDriver; impor . . . '' at line number 36
at bsh.engine.BshScriptEngine.evalSource(BshScriptEngine.java:93) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at bsh.engine.BshScriptEngine.eval(BshScriptEngine.java:46) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_151]
at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:223) ~[ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:69) [ApacheJMeter_java.jar:4.0 r1823414]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:490) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:416) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:250) [ApacheJMeter_core.jar:4.0 r1823414]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_151]
请帮我解决这个问题
JMeter版本:4.0插件自动下载selenium版本:2.52.0
Java:1.8,更新151您需要使用方法
equals()
,如下所示:
import org.openqa.selenium.JavascriptExecutor;
Boolean isAjaxCompletes = (Boolean) ((JavascriptExecutor) webdriver).executeScript("return jQuery.active").equals("0"));
Boolean isJsLoaded = ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete"));
您正在使用不存在的静态引用调用该方法。您应该创建对象并调用
executeScript
方法:
JavascriptExecutor js = (JavascriptExecutor) driver;
Boolean isJsLoaded = js.executeScript("return document.readyState;").toString().equals("complete");
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://jmeter-plugins.org')
WebDriverWait wait = new WebDriverWait(WDS.browser, 5)
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()
import org.openqa.selenium.WebDriver
导入org.openqa.selenium.support.ui.ExpectedCondition
导入org.openqa.selenium.support.ui.WebDriverWait
WDS.sampleResult.sampleStart()
WDS.browser.get('http://jmeter-plugins.org')
WebDriverWait wait=新建WebDriverWait(WDS.browser,5)
ExpectedCondition documentReady=新的ExpectedCondition(){
@凌驾
公共布尔应用(WebDriver驱动程序){
return WDS.browser.executeScript(“return document.readyState”)
.toString().equalsIgnoreCase(“完成”);
}
};
等待。直到(文档准备就绪)
WDS.sampleResult.sampleEnd()
是的,我已经加了。谢谢你的评论。我已经试过这个了。在本例中,下面是错误:
方法调用中的错误:在类'org.openqa.selenium.chrome.ChromeDriver'中找不到方法executeScript(java.lang.String)
,但是,正如您在上述错误中所观察到的,引用的导入语句是方法调用中的错误:静态方法executeScript(java.lang.String)在类“org.openqa.selenium.JavascriptExecutor”中找不到
。所引用的进口声明是错误的。这让我挣扎。非常感谢您的帮助。请尝试js.executeScript(“return document.readyState;”,new Object[]{})
谢谢您的评论。仅显示相同的错误。