无法使用Selenium WebDriver使用getText()和getAttribute(" value")方法访问Textbox文本。 这里我想得到名字的文字,当我使用getText()和getAttribute(" value")方法时,我得到的是null结果。
这是我的代码:
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 :(得分:1)
实际上你正在调用错误的方法从文本框中获取价值
首先调用getText()
input
,这对getText()
元素无效,因为getAttribute("Value")
会在您查找输入值时返回元素的内部文本
第二,您尝试使用getAttribute("value")
从输入中获取值,这是错误的,应该是v
表示driver.findElement(By.id("textFirstName")).getAttribute("value");
是小写的。
所以你应该尝试如下: -
JavascriptExecutor
Edited1 : - 如果遗憾的是,上述内容不起作用,您可以尝试使用String value = (String)((JavascriptExecutor).executeScript("return arguments[0].value", driver.findElement(By.id("textFirstName")));
,如下所示:
angularjs
Edited2 : - 我看到你的元素与angularjs
一起使用,所以你应该尝试使用JavascripyExecutor
使用String value = (String)((JavascriptExecutor).executeScript("return angular.element(arguments[0]).scope().user.st_first_name", driver.findElement(By.id("textFirstName")));
System.out.println(value);
获取价值,如下所示:
var o = {z:1, f:2, a:7}
p = Object.assign({},o),
q = Object.assign(o)
console.log(o, p, o === p);
console.log(o, q, o === q);
答案 1 :(得分:0)
以下是如何获取文本的答案。 (这里使用AngularJS来显示文本框的值)
JavascriptExecutor js = (JavascriptExecutor)driver;
String addr = js.executeScript("return angular.element(document.getElementById('txtFirstName')).scope().user.st_first_name;").toString();
@Saurabh Gaur - 感谢您的帮助: - )
答案 2 :(得分:-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');