【问题标题】:java selenium xpath to find element with text containing whitespacesjava selenium xpath 查找包含空格的文本的元素
【发布时间】: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) 获取与标签关联的元素。

标签: java selenium xpath


【解决方案1】:

感谢 Florent B. 和 Andersson,我找到了解决方案。

"//label[contains(normalize-space(), '" + dropdown + "')]" 效果很好。

【讨论】:

  • //*///不完全一样吗?
  • @Paul Hicks 你是对的。将 //*/label 更改为 //label 没有任何区别。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 2020-09-05
相关资源
最近更新 更多