0

我正在尝试从站点的页面中获取错误消息。该列表包含几个可能的错误,因此我无法通过 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>
4

1 回答 1

1

正确的 XPath 应该是:

//*[@id='errors']//ul/li[contains(@style,'display:list-item')]

//*[@id='errors']你需要一个额外的之后/,因为<ul>它不在它的正下方。再次使用//会扫描所有底层元素以查找<ul>.

如果你有能力不使用//它会更好,更快,更少消耗。

于 2013-09-27T22:31:04.357 回答