我正试图从网站上获取页面的错误消息。该列表包含几个可能的错误,所以我无法通过id检查;但我知道带有display:list-item的那个是我想要的那个。这是我的规则,但似乎不起作用,它有什么问题?我想要返回的是元素中的错误文本。
//*[@id='errors']/ul/li[contains(@style,'display:list-item')]
示例dom元素:
<div id="errors" class="some class" style="display: block;">
<div class="some other class"></div>
<div class="some other class 2">
<span class="displayError">Please correct the errors listed in red below:</span>
<ul>
<li style="display:none;" id="invalidId">Enter a valid id</li>
<li style="display:list-item;" id="genericError">Something bad happened</li>
<li style="display:none;" id="somethingBlah" ............ </li>
....
</ul>
</div>
答案 0 :(得分:1)
正确的XPath应该是:
//*[@id='errors']//ul/li[contains(@style,'display:list-item')]
在//*[@id='errors']
之后,您需要额外的/
,因为<ul>
不在其下方。再次使用//
扫描<ul>
的所有基础元素。
如果你有能力不使用//
,那就会更好,更快,更少消耗。