InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression contains(text() 错误消息

InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression contains(text() error message

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

内部异常 1: InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression contains(text(), 'Submitted') 因为以下错误: TypeError: Failed to execute 'evaluate' on 'Document': 结果不是节点集,因此无法转换为所需的类型。 (会话信息: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

您确定页面已完全加载吗?您是否阅读过文档,特别是 'waits' 部分(link 下面的 python 版本)。我遇到了这个问题,只需在代码中延迟 5 秒,它就可以正常工作。

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

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

FindByXPath("contains(text(), 'Submitted')")

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

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

下面的代码行有效:

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