在Selenium Webdriver中查找输入字段的标签

时间:2019-05-10 10:04:07

标签: java selenium selenium-webdriver

我有一个表格,其中每个文本框都有一个标题。我已经有了文本框的WebElement,我想引用它们的标题(指向"for=id"的标题)。

我尝试了他们的getText仅返回输入框中的文本,尝试了getCssValue("label")却不返回任何内容。我尝试查找所有标签,但这无济于事,因为我仍然必须筛选所有标签,并找到需要带有*的8个不同标签。

<label for="customer_firstname">First name <sup>*</sup></label>
<input onkeyup="$('#firstname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isName" id="customer_firstname" name="customer_firstname" value="">

我想找回标签文本的字符串,因此可以检查(with .contains())是否在末尾包含"*"。最好使用尽可能少的Xpath。

2 个答案:

答案 0 :(得分:0)

要使用输入标签指示标签标签,可以使用以下xpath:

//input[@id='customer_firstname']/preceding-sibling::label

如果您只想输入字段,则应使用我认为唯一的id,尽管您必须在DOM中进行验证。

id = customer_firstname

用于使用<label **for**>

进行引用

您可以使用以下代码:

String  custLabelAttribute = driver.findElement(By.xpath("//input[@id='customer_firstname']/preceding-sibling::label")).getAttribute("for")

应打印: customer_firstname

答案 1 :(得分:0)

如果Input和label标签都属于同一父级,则可以先获取父级的唯一xpath,然后添加//,您可以到达label标签并获取文本。您应该通过找到唯一的xpath并使用.gettext()到达标签标签,然后您将获得标签标签的内文。