1

我将脚本加载到blazemeter webdriver 中,并在运行一个用户时收到以下错误:

sun.org.mozilla.javascript.WrappedException: Wrapped org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"loginForm_login_email"} 命令持续时间或超时:6 毫秒 对于文档关于这个错误,请访问:http ://seleniumhq.org/exceptions/no_such_element.html构建信息:版本:'2.47.0',修订:'0e4837e94b1fad0db93e88cd972ed3e235a22892',时间:'2015-07-29 15:58:41' 系统信息:主机:'r-v3-56f99d3f9b3be-0-ccverdant-bulwark-278 .internal',ip:'10.240.0.17',os.name:'Linux',os.arch:'amd64',os.version:'3.13.0-44-generic',java.version:'1.7.0_95 ' *** 元素信息:{Using=id, value=loginForm_login_email} 会话 ID:c5f12d1b-04f0-49a5-aeab-ab65a8c904e1 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=LINUX, acceptSslCerts=true ,javascriptEnabled=true,cssSelectorsEnabled=true,databaseEnabled=true,browserName=firefox,handlesAlerts=true,browserConnectionEnabled=true,nativeEvents=false,webStorageEnabled=true,rotatable=false,locationContextEnabled=true,applicationCacheEnabled=true,takeScreenshot=true, version=26.0}] (#9) 在第 9 行

我该如何解决?

我的代码有时会在我有更高的“用户”通过blazemeter运行时工作,但当我有一个“用户”通过blazemeter运行时不起作用。

编码:

var pkg = JavaImporter(org.openqa.selenium);
var support_ui = JavaImporter(org.openqa.selenium.support.ui.WebDriverWait);
var wait = new support_ui.WebDriverWait(WDS.browser, 5000);

WDS.sampleResult.sampleStart();
WDS.browser.manage().window().maximize();
WDS.browser.get("https://Website");

WDS.browser.findElement(pkg.By.id("loginForm_login_email")).click();
var username = WDS.browser.findElement(pkg.By.id('loginForm_login_email'));
username.sendKeys(["Generic"]);
WDS.browser.findElement(pkg.By.id("loginForm_password")).click();
var password = WDS.browser.findElement(pkg.By.id("loginForm_password"));
password.sendKeys(["Password1"]);
var button = WDS.browser.findElement(pkg.By.id("login-buttons-password"));
button.click();

WDS.sampleResult.sampleEnd();

我发现的元素:

<input aria-invalid="false" id="loginForm_login_email" name="login_email" 
    placeholder="Username/Email" class="form-control" 
    data-validation-required-message="Please fill out this field."
    required="" type="text">
4

1 回答 1

2

根据Why can't I find the element/NoSuchElementException work around?The WebDriver Sampler: Your Top 10 Questions Answered指南的章节:

A. 在 WebDriver Sampler 执行期间出现此异常的原因可能有很多:

  1. 元素的定位器无效

  2. 该元素属于另一个框架

  3. 该元素在 DOM 中尚不可用

我相信您正在达到第 3 点,因此您需要在尝试使用该元素之前“等待”该元素,例如:

var conditions = org.openqa.selenium.support.ui.ExpectedConditions
WDS.browser.get("https://Website");
wait.until(conditions.presenceOfElementLocated(pkg.By.id('loginForm_login_email')))

您可能还想增加 WebDriverWait 超时,因为当服务器处于加载页面时,渲染时间可能超过 5 秒

有关该方法的更详细说明,请参阅WebDriver: Advanced Usage文档页面的Explicit Waits章节。

于 2016-03-29T06:03:33.497 回答