【发布时间】:2018-01-30 17:29:35
【问题描述】:
我有一个元素,我想通过使用通用 xpath 搜索定义的文本来找到它。问题是其中一个元素中的文本被很多空格分隔。
<div class="form-group">
<label class="col-sm-4 control-label"
for="demo-hor-inputemail">AP Document
Type *</label>
<div class="form-group">
<div class="col-sm-8">
<div>
<ul>
<li class="active-result>option</li>
</ul>
</div>
</div>
</div>
<div>
我当前的工作代码是这样的:
public static void dropdown(String dropdown, String option) {
drop_down = "//*/label[contains(text(), '" + dropdown + "')]";
driver.findElement(By.xpath(drop_down + "/following-sibling::div[1]").click;
driver.findElement(By.xpath(drop_down +
"/following-sibling::div/descendant::li[starts-with(text(),'"+ option +"')]")).click;
}
我需要通过将文本“AP 文档类型”作为下拉参数传递来查找此元素。
我不能只使用“AP 文档”,因为元素具有相同的文本。
我试过用所有空格传递文本,但这没有用。
我尝试了一些这样的修饰符:[normalize-space(text()) = '"+dropdown+"']但没有运气。
到目前为止,我发现的唯一方法是将“Type *”作为下拉变量传递,但我正在寻找更好的解决方案,因为如果文本中没有 *,这种情况将不起作用。
【问题讨论】:
-
我们的 html 片段与 xpath 不匹配,这使得提供答案变得更加困难。如果您还没有,请阅读how to ask good questions。
-
@Luis Muñoz 我读过这篇文章,但我不确定你的意思。在我看来,我的帖子内容很少,无法准确显示我的问题。能否请您更详细地指出原始帖子的哪些部分不够清楚?
-
使用
//label[normalize-space()='AP Document Type *']选择标签。 -
:) 很高兴您阅读了它。您的 xpath 包含片段中不存在的
li。 -
或
id(//label[normalize-space()='AP Document Type *']/@for)获取与标签关联的元素。