jmeter Web驱动程序示例出现Java错误-遇到“WDS”

o4tp2gmn  于 2022-11-09  发布在  Java
关注(0)|答案(3)|浏览(131)

我在JMeter 3.0和jmeter-plugins-webdriver-1.4.0.jar中使用java作为脚本语言。当我运行我的脚本时,该脚本应该打开浏览器并转到gmail.com,然后登录。我收到以下错误:

ERROR - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler: In file: inline evaluation of: ``import org.openqa.selenium; 

import org.openqa.selenium.support.ui;  WDS.sampleRe . . . 

Encountered "WDS" at line 5, column 1.in inline evaluation of: 
import org.openqa.selenium; 

import org.openqa.selenium.support.ui;  

WDS.sampleRe . . . '' at line number 5 

ERROR - com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler: In file: inline evaluation of: 

import org.openqa.selenium.*; import org.openqa.selenium.support.ui.*;  import o . . . '' Encountered "WebElement" at line 9, column 1.
     in inline evaluation of: 

import org.openqa.selenium.*; import org.openqa.selenium.support.ui.*; 

 import o . . .  at line number 9

下面是我的两个脚本:
打开浏览器:

import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.*;

WDS.sampleResult.sampleStart()
WDS.browser.get('http://gmail.com')
// login details
WDS.sampleResult.sampleEnd()

登入:

import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.*;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

WDS.sampleResult.sampleStart()

WebElement userIdElement = WDS.browser.findElement(By.id(("username"));
userIdElement.sendKeys('${email}');
WebElement pwdElement = WDS.browser.findElement(By.id("password"));
pwdElement.sendKeys('${pwd}');
WebElement signIn = WDS.browser.findElement(By.id("login"))
signIn.click();
// login details
WDS.sampleResult.sampleEnd()
busg9geu

busg9geu1#

您的测试有多个问题
1.缺少分号
1.括号不对称
1.如果使用Java语言,则无法访问${email}等JMeter变量
1.无效的Web元素ID
以下是固定代码示例:

  • 打开浏览器
import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.*;

WDS.sampleResult.sampleStart();
WDS.browser.get("http://gmail.com");
// login details
WDS.sampleResult.sampleEnd();
  • 登入
import org.apache.jmeter.threads.JMeterContextService;
import org.apache.jmeter.threads.JMeterVariables;

import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.*;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

WDS.sampleResult.sampleStart();
JMeterVariables vars = JMeterContextService.getContext().getVariables();

WebElement userIdElement = WDS.browser.findElement(By.id("Email"));
userIdElement.sendKeys(new String[]{vars.get("email")});
WebElement nextButton = WDS.browser.findElement(By.id("next"));
nextButton.click();
WebElement pwdElement = WDS.browser.findElement(By.id("Passwd"));
pwdElement.sendKeys(new String[]{vars.get("pwd")});
WebElement signIn = WDS.browser.findElement(By.id("signIn"));
signIn.click();
// login details
WDS.sampleResult.sampleEnd()

还可以考虑使用Explicit Waits,因为浏览器不太可能立即加载页面,因此您将获得大量的NoSuchElementExceptions
有关在JMeter测试中使用WebDriver采样器的更多信息,请参见The WebDriver Sampler: Your Top 10 Questions Answered指南。

smdncfj3

smdncfj32#

我已经使用了这个sendKeys方法,例如:如果By.id。
因此,它不是传递abcd,而是传递NULL

798qvoo8

798qvoo83#

我使用了sendKeys方法示例:

WDS.browser.findElement(By.id("j_username")).sendKeys( new String[] { "abcd" } );

这样做解决了NULL的传递问题。

相关问题