我需要找到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>
任何帮助?
答案 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]", "");