Java Xpath无法找到文本
HTML代码Java Xpath无法找到文本,java,xpath,selenium-webdriver,Java,Xpath,Selenium Webdriver,HTML代码 <div class="filterInfoContainer"> <div class="result-header-right"> <div class="show-soldout"> <label for="soldout-switch">Display sold out products</label> <label class="switch xs">
<div class="filterInfoContainer">
<div class="result-header-right">
<div class="show-soldout">
<label for="soldout-switch">Display sold out products</label>
<label class="switch xs">
<input type="checkbox" name="soldout-switch" id="soldout-switch">
<div class="switch-slider"></div>
</label>
</div>
<div class="sort-by">Sorted by:
<select id="sortByDropdown">
<option value="popularity">Popularity</option>
<option value="price">Lowest price</option>
<option value="discount">Highest discount</option>
<option value="year">Latest release</option>
</select>
</div>
</div>
Showing 323 products
<div class="clearfix"></div>
</div>
我想获取显示323个产品的文本,但xpath没有返回我。由于这篇课文没有特别的div我很难理解
我尝试过的Selenium代码
.//*[@id='filterInfo']/div
.//*[@id='filterInfo']/div/text()
driver.findElement(By.xpath(".//*[@id='filterInfo']/div"));
driver.findElement(By.xpath(".//*[@id='filterInfo']/div/text()"));
获取异常:选择器无效
尝试使用Chrome中的开发人员工具,首先通过xpath查找“filterInfo”组件,看看是否有效。您可以使用
/div/text()
查看323个产品。
基本上,它将返回未包装在标记中的文本。
请参考这个
因此,在你的情况下:
//div[@class='filterInfoContainer']/text()
在
Selenium
XPath
表达式中,只有当第二个XPath
打算返回文本节点时,才应返回webelement
。这就是为什么会出现无效选择器
异常
另外,我在提供的HTML
示例中没有看到带有id=“filterInfo”
的div
。如果您需要获取“显示323产品”,请尝试以下代码:
driver.findElement(By.xpath("//div[@class="filterInfoContainer"]/div[1]")).getText();
考虑到更新的HTML
sample,当您需要获取不包含子元素文本的文本时,另一种方法是:
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("return document.evaluate('//div[@class=\"filterInfoContainer\"]/div/following-sibling::text()', document, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;");
例如,如果id为“filterInfo”的组件位于一个表中,那么您可能必须这样编写:“table id:filterInfo”是否有可能通过代码更改将“Showing 323 products”移动到标记中?@Fey-没有可能更改代码:(谢谢你的回答。我刚刚更新了html代码,你能基于此更新答案吗。请尝试更新的答案,如果不起作用,请告诉我。你可能需要使用
trim()
删除不必要的空格JavaScriptExecutor
不返回所需的值、不正确的值、不返回任何内容、异常?它不会通过任何错误或异常,也不会返回任何文本。提供的HTML
示例是否与真实的HTML
完全相同?可能您删除了一些节点?请尝试添加一些睡眠时间