Java selenium webdriver-从文本字段中获取文本
我试着测试下面1+7的加法运算;但我不知道 如何获取属性“name”为“Input”的文本字段的结果输出 任何指示都将不胜感激Java selenium webdriver-从文本字段中获取文本,java,selenium-webdriver,Java,Selenium Webdriver,我试着测试下面1+7的加法运算;但我不知道 如何获取属性“name”为“Input”的文本字段的结果输出 任何指示都将不胜感激 包装hw9; 导入java.util.concurrent.TimeUnit; 导入org.junit.*; 导入静态org.junit.Assert.*; 导入org.openqa.selenium.*; 导入org.openqa.selenium.firefox.FirefoxDriver; 公共类计算器{ 私有网络驱动程序; 私有字符串baseUrl; @以前
包装hw9;
导入java.util.concurrent.TimeUnit;
导入org.junit.*;
导入静态org.junit.Assert.*;
导入org.openqa.selenium.*;
导入org.openqa.selenium.firefox.FirefoxDriver;
公共类计算器{
私有网络驱动程序;
私有字符串baseUrl;
@以前
public void setUp()引发异常{
驱动程序=新的FirefoxDriver();
baseUrl=”http://www.math.com/";
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}
@试验
public void testCalculator()引发异常{
get(baseUrl+“/students/calculators/source/basic.htm”);
driver.findElement(按.name(“一”))。单击();
driver.findElement(按.name(“plus”))。单击();
driver.findElement(按.name(“七”))。单击();
driver.findElement(By.name(“DoIt”))。单击();
字符串输出=driver.findElement(By.name(“Input”)).getText();
System.out.println(“输出:”+Output);//**尝试driver.findelelement(按.name(“输入”)).getAttribute(“值”)
例如,element.getText()
用于获取标记内的文本节点
文本
但是,输入的文本不在标记(由节点表示)内,而是在value属性内;例如:
因此,如果要获取元素中的节点文本,必须使用element.getText()
,但是如果要获取输入的值,必须使用element.getAttribute(“value”)
尝试driver.findElement(By.name(“input”).getAttribute(“value”)
例如,element.getText()
用于获取标记内的文本节点
文本
但是,输入的文本不在标记(由节点表示)内,而是在value属性内;例如:
因此,如果要获取元素内的节点文本,必须使用element.getText()
,但是如果要获取输入值,必须使用element.getAttribute(“值”)
尝试使用By.id(“输入”)
元素没有id;它只有名称和类型属性。您在第一句中说的文本字段的id为“Input”
。另外,如果您发布您正在测试的页面的HTML,也会有所帮助。我已经编辑了原始问题。即使在您得到答案后,assertEquals(8,输出)
将永远不会成功,因为int
永远不能等于字符串
。请尝试使用By.id(“输入”)
该元素没有id;它只有名称和类型属性。您说的文本字段的id为“输入”
在第一句话中。另外,如果您发布您正在测试的页面的HTML,也会有所帮助。我已经编辑了原始问题。即使在您得到答案后,assertEquals(8,输出);
将永远不会成功,因为int
永远不能等于字符串
。没有值属性。我相信这应该可以,请参阅Hello,@user1972031!如果没有任何值属性,则表示输入的值或文本为空;在这种情况下,当您调用element.getAttribute(“值”)时,这将返回null。您好,@user1972031!我很确定如果您的输入有一些可见的文本(这意味着,您可以从浏览器的html页面中看到它),则它有一个带有该文本的值属性。如果没有任何值属性,则表示输入的值或文本为空;在这种情况下,当调用element.getAttribute(“value”)时,将返回null。如果是这种情况,则必须检查SUT(测试中的系统),它没有正确设置输入值,而不是您的selenium脚本。@budi:您提供的链接“”有一个很好的解释(下面逐字引用):--------------------------------------------------------------事实证明,如果缺少属性,它将尝试获取相应的属性。因此,您可以来自文本区域的“value”。–C-F----------------------------------------------------没有value属性。我相信这应该可以,请参见Hello,@user1972031!如果没有任何value属性,则表示输入的值或文本为空;在本例中,当您调用element.getAttribute(“value”)时,这将返回null。您好,@user1972031!我很确定如果您的输入有一些可见的文本(这意味着,您可以从浏览器的html页面中看到它),则它有一个带有该文本的值属性。如果没有任何值属性,则表示输入的值或文本为空;在这种情况下,当调用element.getAttribute(“value”)时,将返回null。如果是这种情况,则必须检查SUT(测试中的系统),它没有正确设置输入的值,而不是您的selenium脚本。@budi:您提供的链接“”有一个很好的解释(下面逐字引用):--------------------------------------------------------------事实证明,如果缺少属性,它将尝试获取相应的属性。因此,您可以文本区域中的“值”-C-F--------------------------------------------------------------
package hw9;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
public class calculator {
private WebDriver driver;
private String baseUrl;
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www.math.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testCalculator() throws Exception {
driver.get(baseUrl + "/students/calculators/source/basic.htm");
driver.findElement(By.name("one")).click();
driver.findElement(By.name("plus")).click();
driver.findElement(By.name("seven")).click();
driver.findElement(By.name("DoIt")).click();
String output = driver.findElement(By.name("Input")).getText();
System.out.println("Output: " + output); // **<--- Empty output**
assertEquals(8,output);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
}
<td>
<div align="center"> <font size="+1">
<input name="Input" type="text" size="16">
</font></div>
</td>