Lok*_*lli 1 java selenium xpath selenium-webdriver
<span class="label label-danger" style="font-size : 13px; font-weight : 400;">Critical</span>
Run Code Online (Sandbox Code Playgroud)
下面是我使用的xpath:
.//tr[@data-index='0']/td/span
Run Code Online (Sandbox Code Playgroud)
我在上面的HTML源代码中有一行代码.所以,我使用了相应的Xpath和used getText()方法来获取文本,即Critical.我成功了.
但是,我在另一个页面中有另一行这样的.
<div class="col-xs-12">
<div id="project-update-success-information" class="panel-confirmation success" style="display: none;">
<span class="fa fa-check"/>
Project Updated
</div>
Run Code Online (Sandbox Code Playgroud)
下面是我使用的xpath: -
.//*[@id='project-update-success-information']/span
Run Code Online (Sandbox Code Playgroud)
我使用了相应的Xpath getText(),但不幸的是它没有为我检索文本.我怀疑</span>第二行中没有关闭标签导致问题.有没有其他方法来获取文本?
这个问题已有很多答案,但没有一个真正解释这个问题.首先,在转向真正的问题之前,让我们先解开关于自闭合元素的初步困惑:不,这不是一个像元素一样的问题
<span class="fa fa-check"/>
Run Code Online (Sandbox Code Playgroud)
没有</span>标签.没有必要指出它的结束位置,因为/>已经告诉您该元素不包含任何内容并在此时关闭.
那么我们只看一下你展示的文档的片段:
<div class="col-xs-12">
<div id="project-update-success-information" class="panel-confirmation success" style="display: none;">
<span class="fa fa-check"/>
Project Updated
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
一个XPath表达式(请注意,很可能你不需要.在表达式的最开头):
//*[@id='project-update-success-information']
Run Code Online (Sandbox Code Playgroud)
将返回内部div元素及其包含的所有内容.它包含的内容完全按以下顺序排列:
span元素,没有属性以外的内容因此,当您选择内部div和使用时.getText(),结果中最终会有2个文本节点,这一点都不足为奇.获取元素的文本内容的另一种方法是text()在XPath表达式中使用:
//*[@id='project-update-success-information']/text()
Run Code Online (Sandbox Code Playgroud)
将返回(单个元素分隔--------):
[whitespace-only text node]
-----------------------
Project Updated
Run Code Online (Sandbox Code Playgroud)
解决方案是
getText()检索所有文本节点,然后排除仅包含空格或节点的节点使用直接定位文本节点的XPath表达式,并排除仅包含空格的表达式.这样做的标准方法是[normalize-space()]:
//*[@id='project-update-success-information']/text()[normalize-space()]
请注意,通常,不能保证元素的文本内容将位于单个文本节点中.很可能您有时会遇到HTML或XML,其中元素有多个文本节点,所有这些节点都包含非空白字符,例如:
<div>
Project
<span/>
Updated
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |