在Selenium Webdriver中,如何在文本后获取输入元素?

时间:2018-05-16 15:11:37

标签: selenium selenium-webdriver xpath webdriver

就我而言,有一些遗留网站,其中并非所有输入都有 id属性设置正确。比如这个:

<div class="form-group">
    <label>Amount</label>
    <input id="unreasonablename" type="text" value=""></input>
</div>

但是人类测试人员仍然可以通过在“金额”后面的输入中键入金额值来测试它。我想让网络驱动程序做同样的事情:

webDriver.inputAfter("Amount", 100); //I do not want to use "unreasonablename" to find the input.

但是如何在文本“Amount”之后找到输入元素?感谢。

这里有一个相对的问题:In Selenium Webdriver, how to get a text after an element?。但我不熟悉xpath,也不知道我的案例能否以同样的方式解决。

4 个答案:

答案 0 :(得分:2)

要在文字金额之后找到<input>元素,您可以使用findElement()方法以及定位器策略,如下所示:< / p>

webDriver.findElement(By.xpath("//label[contains(.,'Amount')]//following::input[1]"));

答案 1 :(得分:2)

你可以尝试使用follow_sibling

webDriver.findElement(By.xpath("//*[text()='Amount']/following-sibling::Input"));

答案 2 :(得分:2)

试试这个:

driver.findElement(By.xpath("//label[text()='Amount']/following-sibling::input")).sendKeys("amount to be sent");

答案 3 :(得分:1)

你可以写下面的通用方法。它可以通过传递标签名称和输入值作为参数

来用于所有必需的文件
void enterInputAfterLabel(String labelname,String value){
driver.findElement(By.xpath("//label[text()='"+labelname+"']]/input")).sendKeys(value);
}