如何查找 - 在2个标签标签之间写入文本的xpath

时间:2016-03-15 09:01:54

标签: html selenium xpath webdriver

我需要找到xpath从下面的html页面获取值300。我已经使用xpath作为//标签[contains(text(),')来自stackoverflow的答案 - 来自于#bibling :: text() - 但它并没有很好地解决。我的下一个动作是基于这个值。所以我需要阅读它。

<td class="clsLineCounterLabel">
<input id="lineCounter" class="clsLineCounter" tabindex="-1" size="4" value="0" readonly=""/>
<label id="lblOf" for="Of">of</label>
        300 
<label id="lblAllowedTextLines" for="AllowedTextLines">allowed text lines</label>
</td>

任何帮助?

3 个答案:

答案 0 :(得分:0)

文字300属于<td>标记。尝试

String value = driver.findElement(By.className("clsLineCounterLabel")).getText();

value将为300

xpath是

//td[@class='clsLineCounterLabel']

答案 1 :(得分:0)

使用以下代码:

String value = driver.findElement(By.xpath("//input[@id='lineCounter]/parent::td")).getText();

在控制台上打印值,它会打印td的整个文本,然后过滤整数值。

希望这会奏效。

由于 萨迪克

答案 2 :(得分:0)

获得300有点棘手,因为它没有自己的节点。

你可以使用一些带有元素作为参数的JavaScript获得300:

WebElement element = driver.findElement(By.id("lblOf"));
String txt = ((JavascriptExecutor)driver).executeScript(
  "return arguments[0].firstChild.textContent;", element);

或者只需一次JavaScript调用:

String txt = ((JavascriptExecutor)driver).executeScript(
  "return document.getElementById('lblOf').firstChild.textContent;", element);

或者用正则表达式提取数字:

String txt = driver.findElement(By.xpath("//*[@id='lblOf']/.."))
                   .getText().replaceAll("[^\\d]", "");