首页 > 解决方案 > 无法使用 Selenium/c# 单击 Dynamics365 下拉菜单 - “ElementNotVisibleException”

问题描述

我正在使用 Selenium/C# 自动化 Dynamics365 CRM。能够单击并下拉菜单,但无法找到并单击“提交”选项(第 2 行代码)。得到这个异常:OpenQA.Selenium.ElementNotVisibleException: '// [contains(text(),'Submitted')]'*. 感谢任何想法如何处理这个问题。我还给出了下面的 gui 和 html。最后一张图片中突出显示的是下拉框所在的字段。

使用的功能 在此处输入图像描述 在此处输入图像描述

标签: c#selenium-webdriverdynamics-crm

解决方案


在 WEB UI 端自动化/抓取 Dynamics 365 可能很困难,我去过那里。UI 表单使用大量 JS 事件处理、css 类命名来显示/隐藏值、框等。仅依靠在元素上调用“click”事件,我敢肯定,如果不是不可能的话,你会很难达到你的目标。例如,元素有时同时对鼠标悬停单击事件很敏感!你能与本地 js 对象交互吗?因为有一种更简单的方法。Dynamics 365 使用名为 Xrm 的本地 js 表单 API,因此请在 Google 上搜索。这是获取表单上可用属性列表的示例:在浏览器控制台中运行。

Xrm.Page.getAttribute()

它将返回属性名称列表。找到与您的下拉字段对应的属性名称。要获取可用选项值(键/值对)的列表,您可以简单地执行以下操作:

Xrm.Page.getAttribute("industrycode").getOptions()
// industrycode in this example is a standard attribute of account entity
// returns [{ name: <string>, value: <int>  }, {...} ]

找到正确的值并像这样设置字段:

Xrm.Page.getAttribute("industrycode").setValue([value])

然后保存表格。


推荐阅读