寻找在输入字段之前查找文本的通用方法,以了解在字段中填写的内容。使用xpath,css选择器或任何其他可能的方式。
<div>
<span>Full Name</span>
<input name="xddadN">
</div>
<div>
<span>Email</span>
<input name="xedadN">
</div>
或者
<div>
<div><label>Full Name</label></div>
<div><input name="xddadN"></div>
<div><label>Email</label></div>
<div><input name="xedadN"></
</div>
或
<div>
<label>Full Name<br>
<span><input name="xddadN"></span>
</label>
</div>
<div>
<label>Full Name<br>
<span><input name="xddadN"></span>
</label>
</div>
答案 0 :(得分:2)
您可以尝试将以下XPath表达式转换为get preceding text node:
sudo su - postgres -c "psql -c 'TRUNCATE TABLE table_name;' database_name"
或更具体的全名
//input/preceding::*[1]
和电子邮件:
//input[@name="xddadN"]/preceding::*[1]
答案 1 :(得分:0)
全名使用此Xpath: //输入[@ name ='xddadN'] / preceding-sibling :: span
代码:
String fullName = driver.findElement(By.Xpath(//input[@name='xddadN']/preceding-sibling::span)).getText();
String Email = driver.findElement(By.Xpath(//input[@name='xedadN']/preceding-sibling::span)).getText();
答案 2 :(得分:0)
您尚未提及任何 Selenium Language Binding Art ,因此我将使用 Java 作为示例。
是,您可以使用通用方法在输入字段之前查找文本,如下所示:
根据HTML:
<div>
<span>Full Name</span>
<input name="xddadN">
</div>
<div>
<span>Email</span>
<input name="xedadN">
</div>
要从<span>
标记中检索您可以使用的<input>
标记中的文字全名:
String myText = driver.findElement(By.xpath("//input[@name='xddadN']//preceding::*[1]")).getAttribute("innerHTML");
在我看来,通用方式 通用方式是陷阱,这会导致很多混乱>强>和不明智,原因如下:
<span>
标记)将使你的测试用语 失败。<tagName>
将是有益的优化 元素搜索过程。如果未包含<tagName>
,则测试将需要更多时间来查找元素并对其执行操作。在此过程中,您将损害测试自动化的一些优势。因此,根据最佳实践的结论总是包含<tagName>
,同时通过 css-selectors构建定位器策略 或 xpath 。