【问题标题】:InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression contains(text() error messageInvalidSelectorException:无效选择器:无法使用 xpath 表达式包含(text()错误消息定位元素
【发布时间】:2021-04-05 15:04:32
【问题描述】:

当 selenium/C# 程序尝试单击 Dynamis365 下拉列表中的元素时,我收到此错误消息。

内部异常 1: InvalidSelectorException:无效选择器:由于以下错误,无法找到具有 xpath 表达式 contains(text(), 'Submitted') 的元素: TypeError:无法对“文档”执行“评估”:结果不是节点集,因此无法转换为所需的类型。 (会话信息:chrome=87.0.4280.88)

我的代码是:

  internal void SetValues()
    {
        findByElement.FindByXPath("//span[contains(text(), 'Submission Pending')]").Click();
        findByElement.FindByXPath("contains(text(), 'Submitted')").Click();
    }

HTML 是:

<span id="id-bc19d003-2d6a-43ad-8e1b-566ecbb00647-132-statuscode6-statuscode.fieldControl-pickliststatus-comboBox_text-value" class=" ">Submission Pending</span>

我正在尝试单击 已提交 选项,该选项未在 HTML 中显示:DropDownList

注意:其他下拉列表选项不显示在 html 中。只有在做出选择 (Submitted) 后,它才会显示在 html 中(替换 Submission Pending") Submission Pending Submitted clicked

【问题讨论】:

    标签: selenium dynamics-crm


    【解决方案1】:

    您确定页面已完全加载吗?您是否阅读过文档,特别是“等待”部分(以下链接为 python 版本)。我遇到了这个问题,只是在代码中延迟了 5 秒,它运行良好。

    https://selenium-python.readthedocs.io/waits.html

    另外,您可能会发现通过 id 而不是通过 XPath 定位元素更容易

    【讨论】:

    • 页面已完全加载(使用显式等待)并且 Id 在 Dynamics365 中是动态的,因此无法通过它进行搜索。问题是单击 Submitted 菜单选项而无法执行此操作。我在同一个程序的另一个地方做过类似的事情,它可以工作,但不是在这里。
    【解决方案2】:
    FindByXPath("contains(text(), 'Submitted')")
    

    这不是一个有效的 XPath 表达式!所有 XPath 必须以斜杠 / 字符开头。也许您的意思是:

    FindByXPath("//*[contains(text(), 'Submitted')]")
    

    【讨论】:

    • 我尝试了所有这些,但仍然没有运气。我在原始问题中添加了一个注释,其中包含之前和之后的 html 屏幕截图。
    • 代码/文本的屏幕截图没有用。如果元素没有立即出现在 DOM 中,则必须使用等待。
    • 您能帮忙找出元素是否存在于 DOM 中吗?我正在使用 ElementIsVisible(By)。也尝试过 ElementExists(By)、ElementToBeClickable(By) 并没有运气。
    • 如果我无法访问您的 DOM,再加上这个平台,就不是调试问题的理想情况。我个人尝试通过 XPath 识别更广泛的 DOM 块,验证它们是唯一且存在的,然后从那里缩小范围。通常应用程序是响应式的——您可能不得不求助于(多个!?!?)等待。这可以通过充分的调试来发现。
    【解决方案3】:

    以下代码行:

    findByElement.FindByXPath("//*[./text()='Submitted']").Click();

    【讨论】:

      猜你喜欢
      • 2018-09-29
      • 2018-10-04
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      • 2015-05-08
      • 2019-09-19
      相关资源
      最近更新 更多