我在J meter中遇到了Web驱动程序采样器的问题。 我在web驱动程序采样器中编写了一个简单的代码,我已经给了一个url并传递了一些凭据来登录。
当我运行测试时...浏览器被调用,url被传递到地址栏然后 浏览器关闭或崩溃。有时浏览器在传递密码后会崩溃。请看下面的代码,让我知道 如果我错过了什么。
代码。 var pkg = JavaImporter(org.openqa.selenium)//导入java selenium包 var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait) var ui = JavaImporter(org.openqa.selenium.support.ui) var wait = new support_ui.WebDriverWait(WDS.browser,20000) WDS.sampleResult.sampleStart()
WDS.browser.get('https://web2qa.westlaw.com/signon/default.wl?bhcp=1&fn=_top&newdoor=true&rs=WLW14.07&vr=2.0')
var Onepass=WDS.browser.findElement(pkg.By.id('OnePassHeaderLink'))
Onepass.click()
var usernameField = WDS.browser.findElement(pkg.By.id('pwd'))
usernameField.sendKeys(['pwd1'])
var passwordField = WDS.browser.findElement(pkg.By.id('clientid'))
passwordField.sendKeys(['pwd2'])
var loginButton=WDS.browser.findElement(pkg.By.id('login_submit'))
loginButton.click()
WDS.log.info(WDS.name + ' has logged an entry')
WDS.sampleResult.sampleEnd()
1.我确实减少了超时期限,仍然存在问题。 2.i已经添加了你提到的代码甚至在用户名字段和密码字段中,一旦页面加载,浏览器仍会崩溃。 3.请在下面找到屏幕截图和错误日志。
错误日志: 2014/07/22 01:27:56 INFO - jmeter.threads.JMeterThread:以正向顺序运行PostProcessors 2014/07/22 01:27:56 INFO - jmeter.threads.ThreadGroup:启动线程组编号1 2014/07/22 01:27:56 INFO - jmeter.engine.StandardJMeterEngine:所有线程组都已启动 2014/07/22 01:27:56 INFO - jmeter.threads.JMeterThread:线程开始:线程组1-1 2014/07/22 01:28:09 INFO - com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig:iterationStart() 2014/07/22 01:28:09 INFO - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler:当前线程名称:'Thread Group 1-1',有浏览器:'FirefoxDriver:firefox on XP(098965b0- fea8-4428-9e6e-76d1385cecc2)” 2014/07/22 01:28:22错误 - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler:sun.org.mozilla.javascript.internal.WrappedException:Wrapped org.openqa.selenium.NoSuchElementException:无法找到element:{“method”:“id”,“selector”:“login_submit”} 命令持续时间或超时:32毫秒 有关此错误的文档,请访问:http://seleniumhq.org/exceptions/no_such_element.html 构建信息:版本:'2.34.0',修订版:'11cd0ef93615408e0b6b3bfa28defe125906461a',时间:'2013-08-06 11:43:14' 系统信息:os.name:'Windows 2003',os.arch:'x86',os.version:'5.2',java.version:'1.6.0_37' 会议ID:098965b0-fea8-4428-9e6e-76d1385cecc2 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver 功能[{platform = XP,acceptSslCerts = true,javascriptEnabled = true,browserName = firefox,rotate = false,locationContextEnabled = true,version = 16.0.2,cssSelectorsEnabled = true,databaseEnabled = true,handlesAlerts = true,browserConnectionEnabled = true,nativeEvents = true,webStorageEnabled = true,applicationCacheEnabled = true,takeScreenshot = true}](#18)in the number number 18 2014/07/22 01:28:22 INFO - jmeter.threads.JMeterThread:线程完成:线程组1-1 2014/07/22 01:28:22 INFO - jmeter.engine.StandardJMeterEngine:通知测试结束测试的听众 2014/07/22 01:28:22 INFO - jmeter.gui.util.JMeterMenuBar:setRunning(false, local )
答案 0 :(得分:0)
WebDriverWait(WDS.browser,20000)
的第一
您确定等待元素出现的20000秒是否正确超时?这是5.5小时。如果你需要20秒就可以在那里放20个。
<强>第二强>:
browser.get
请求后,可能无法立即加载元素。例如,如果元素正在加载AJAX,它可能需要一些额外的时间才能在DOM中出现,而WebDriver可以与它进行交互。
所以我建议像:
WDS.browser.get('https://web2qa.westlaw.com/signon/default.wl?bhcp=1&fn=_top&newdoor=true&rs=WLW14.07&vr=2.0')
wait.until(ui.ExpectedConditions.presenceOfElementLocated(pkg.By.id('OnePassHeaderLink')))
var Onepass=WDS.browser.findElement(pkg.By.id('OnePassHeaderLink'))
Onepass.click()
对usernameField
,passwordField
等应用相同内容
第三次:如果您仍然遇到任何问题,请添加View Results Tree侦听器或检查jmeter.log
文件以找出测试失败的原因并使用错误消息更新您的问题Stack Overflow社区不足以猜测您的测试有什么问题。
有关如何使用WebDriver Sampler的更多详细信息,请参阅Using Selenium with JMeter's WebDriver Sampler指南。