Xpath /按文本搜索输入节点

时间:2013-04-23 08:17:02

标签: xpath webdriver selenium-webdriver

我有一个搜索框(<input>元素),我尝试通过写入其中的文本获取元素。

我尝试着做下一个:

// input [@value= "my text"] 

但它不起作用(只是为了清楚 - 值不是输入元素的属性。但是,当我检查元素时,我没有看到写在这个文本框中的文本。)

<div class="EwdOOOOO">
 <div class="GOOOEOOO">Hello </div> 
 <input type="text" class="GOBLEOOO"> 
</div>

和我提出的接收盒:

"How are you?"

您可以看到在DOM中找不到"How are you?"

感谢。

2 个答案:

答案 0 :(得分:4)

您确定要获得输入并填充它吗?

喜欢:

WebElement input = driver.findElement(By.xpath("//input[@class='GOBLEOOO']"));
input.sendKeys("How are you?");

所以你可以得到这样的元素:

WebElement inputByValue = driver.findElement(By.xpath("//input[@value='my text']"));

或者您有其他方法可以做到这一点

WebElement inputByValue= driver.findElement(By.xpath("//input[contains(@value,'my text')]"));
如果您的属性contains()的值包含下一个参数(字符串)

@value,则返回true

因为您输入了值,因此value attribute中始终存在inputHere for more Input specs.


如果要在输入字段中找到包含您输入值的元素,可以使用此xpath。

// you get the value you typed in the input
String myValue = driver.findElement(By.xpath("//input[@class='GOBLEOOO']")).getAttribute("value"); 

//you get a element that contains myValue into his attributes
WebElement element = driver.findElement(By.xpath("//*[contains(@id ,myValue) or contains(@value, myValue) or contains(@name, myValue)]"));

答案 1 :(得分:0)

请参阅我的回答here。有时,您设置的文本值被指定为文本框的“值”属性,而不是“文本”

WebElement input = driver.findElement(By.cssSelector("input[type='text']"));
input.sendKeys(enteredValue)
String retrievedText = input.getAttribute("value");
if(retrievedText.equals(enteredValue)){
 //do stuff
}