就我而言,有一些遗留网站,其中并非所有输入都有 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,也不知道我的案例能否以同样的方式解决。
答案 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);
}