2016-08-06 6 views
-2

Невозможно получить доступ к текстовому текстовому полем с использованием методов getText() и getAttribute ("value") с использованием Selenium WebDriver. Здесь я хочу получить текст первого имени, когда я использую методы getText() и getAttribute ("value"), я получаю нулевой результат.Невозможно получить доступ к тексту текстового поля с помощью методов getText() и getAttribute ("value") с использованием Selenium WebDriver

Вот как веб-страницы и элемент кода выглядит enter image description here

Вот мой код:

WebElement T = driver.findElement(By.id("txtFirstName")); 
System.out.println("Frist Name is : " + T.getAttribute("value")); 

&

System.out.println("Frist Name is : " + T.getText()); 

Выход:

Frist Name is : 

Справка PLZ.

+0

Вы уверены, вы размещения правильный элемент ?? Может быть, есть еще элемент, который имеет одинаковый идентификатор, и вы получаете значение от неправильного элемента? Подтвердите это –

+0

Не могли бы вы поделиться, как вы находите элемент? –

+0

Атрибут 'value' по-прежнему пуст в окне проверки HTML. Я не знаю Anglular, поэтому я не знаю, как это может произойти, но вы должны попытаться запустить 'document.getElementById (« txtFirstName »).value' в консоли и убедитесь, что он работает там. –

ответ

1

На самом деле вы вызываете неправильные методы, чтобы получить значение из текстового поля

  • первых вы звоните getText(), которые не будут работать на input элемент, потому что getText() возвращает внутренний текст элемента в то время как вы ищете для ввода значения

  • секунд вы пытаетесь получить значение от ввода, используя getAttribute("Value"), что не так, должно быть getAttribute("value") означает v в нижнем регистре.

Таким образом, вы должны попробовать, как показано ниже: -

driver.findElement(By.id("textFirstName")).getAttribute("value"); 

Edited1: - Если, к сожалению, выше не работает, вы можете попробовать использовать JavascriptExecutor, как показано ниже:

String value = (String)((JavascriptExecutor).executeScript("return arguments[0].value", driver.findElement(By.id("textFirstName"))); 

Edited2: - Как я вижу, ваш элемент работает с angularjs, поэтому вы должны попытаться получить значение, используя angularjs stufff использованием JavascripyExecutor как показано ниже:

String value = (String)((JavascriptExecutor).executeScript("return angular.element(arguments[0]).scope().user.st_first_n‌​ame", driver.findElement(By.id("textFirstName"))); 
System.out.println(value); 
+0

v написано в нижнем регистре, но не в состоянии читать текст – Nikunj

+0

@Nikunj не способен означает, есть ли какое-либо исключение или что-нибудь еще? –

+0

@Nikunj И убедитесь, что есть только один элемент, который я хотел бы найти? –

-1

попробовать это попробовать использовать одинарную кавычку

WebDriver driver= new FirefoxDriver(); //or wharever broeser you are using 
driver.get(url); //url of your webpage 
WebElement firstName=driver.findElement(By.ID("txtFirstName"); 
String fn=firstName.getAttribute('value'); 
0

Вот ответ о том, как получить текст. (Здесь AngularJS используется на отображаемое значение для текстового поля)

JavascriptExecutor js = (JavascriptExecutor)driver;  
String addr = js.executeScript("return angular.element(document.getElementById('txtFirstName')).scope().user.st_first_name;").toString(); 

@Saurabh Гаур - Спасибо за помощь :-)