如何查找输入字段的标签

时间:2018-04-24 09:37:25

标签: selenium xpath css-selectors

寻找在输入字段之前查找文本的通用方法,以了解在字段中填写的内容。使用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>

3 个答案:

答案 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");
    

现在陷阱

在我看来,通用方式 通用方式陷阱,这会导致很多混乱强>和不明智,原因如下:

  • 根据 xpath ,我们直接跳到上一个元素,HTML DOM中的一个小变化(例如包含<span>标记)将使你的测试用语 失败
  • 通常,在通过 css-selectors xpath 构建定位器策略时,包含<tagName>将是有益的优化 元素搜索过程。如果未包含<tagName>,则测试将需要更多时间来查找元素并对其执行操作。在此过程中,您将损害测试自动化的一些优势。

结论

因此,根据最佳实践的结论总是包含<tagName>,同时通过 css-selectors构建定位器策略 xpath