2017-01-03 3 views
1

Я искал через переполнение стека и в то время как есть ответы на «org.openqa.selenium.NoSuchElementException: Не удалось найти элемент», они, похоже, не соответствуют моей ситуации. Я очень новичок в кодировании и использовании селена. Поэтому любая помощь, которую вы можете предоставить, была бы потрясающей. Заранее спасибо.org.openqa.selenium.NoSuchElementException Не удается найти элемент текстового поля.

Я получаю эту ошибку, когда я нахожу элемент, который является текстовым полем имени пользователя.

Когда я проверяю элемент с помощью firepath, я получаю следующее:

 
input id="txt_658_4692" class="form-control ggo-field" required="1" data-bv-notempty-message="The field is required." data-bv-stringlength-message="255 characters to be removed." data-fv-stringlength="true" maxlength="255" data-ggo-maxlength="255" name="txt_658_4692" data-ggo-fieldtype="TEXT" data-ggo-fieldidentifier="APPLICANT_USERNAME" data-ggo-token="de6cbe2fe346a847ab301bd6147c0374" value="" type="text"/ 

Так где-то в этой строке с ума должен быть элемент, который я могу предназначаться для затем отправить ключи для входа в систему.

Я попытался с помощью

driver.findElement(By.Id()) 
driver.findElement(By.xpath()) 
driver.findElement(By.cssSelector()) 
driver.findElement(By.name()) 

Это часть кода, в котором я получаю сообщение об ошибке

WebElement usernameTextbox = driver.findElement(By.xpath(".//*[@id='txt_658_4692']")); 
    usernameTextbox.sendKeys("russelltest1"); 

Любая помощь или предложения были бы замечательными.

спасибо.

ответ

1

NoSuchElementException выбрасывается, когда webdriver не может найти элемент в DOM. Я предполагаю, что ваш идентификатор элемента textbox, вероятно, динамически изменяется, поэтому этот запрос xpath не может выбрать его, потому что его больше нет. Попробуйте с различными селектором XPATH, что-то вроде:

driver.findElement(By.xpath(".//*[data-ggo-fieldidentifier='APPLICANT_USERNAME']")); 

Смотрите, если это помогает.

+0

В итоге я нашел его с помощью driver.findElement (By.xpath (".//*[@ id = 'txt_658_4692']")); Когда я смотрел на консоль, он продолжал давать мне что-то близкое к этому, но отрезал. Просто вопрос проб и ошибок. Спасибо, что нашли время ответить на мой вопрос. Я ценю это. – rcorless

0

Вы также можете определить текстовое поле, используя текст ярлыка. Например, если ваше имя пользователя метка поле имеет свойства текста, как Пользователь:, вы можете найти текстовое поле, используя следующий XPath:

//label[text()='User:']/following::input[1] 

или

//*[text()='User:']/following::input[1] 

В случае, если он не работает для вы, пожалуйста, поделитесь полным HTML для этой страницы, так что я могу указать вам точный путь для требуемого текстового поля.

+0

В итоге я получил его с xpath. Спасибо! – rcorless

Смежные вопросы