При использовании Jmeter/Blazemeter я получаю сообщение об ошибке org.openqa.selenium.NoSuchElementException: невозможно найти элемент:

Я загружаю скрипт в веб-драйвер blazemeter и при запуске одного пользователя получаю следующую ошибку:

sun.org.mozilla.javascript.WrappedException: Wrapped org.openqa.selenium.NoSuchElementException: невозможно найти элемент: {"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-c.c.verdant-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} Идентификатор сеанса: c5f12d1b-04f0-49a5-aeab-ab65a8c904e1 Информация о драйвере: org.openqa.selenium.firefox.FirefoxDriver Возможности [{platform=LINUX, acceptSslCerts=true , javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserNam e=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">

person Jason L    schedule 28.03.2016    source источник


Ответы (1)


Согласно Почему я не могу найти обходной путь element/NoSuchElementException? главы Семплер WebDriver: ответы на 10 основных вопросов:

О. Может быть несколько причин, по которым вы получаете это исключение во время выполнения пробоотборника WebDriver:

  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: расширенное использование для более подробного объяснения подхода.

person Dmitri T    schedule 29.03.2016