我们可以使用 Selenium webdriver 来自动化基于 MS CRM 2015 的应用程序吗?

Can we use Selenium webdriver for automating MS CRM 2015 based application?

我们可以使用 Selenium webdriver 来自动化基于 MS CRM 2015 的应用程序吗?如果不能,是否有任何具体原因。

Selenium 可以自动化网页的任何部分,如果它基于 HTML。所以如果你想检查它,打开 CRM web 应用程序,打开浏览器控制台并确认你的自动化测试所需的所有元素是否都基于 HTML.

Selenium 无法访问网页的非HTML 组件。您可能想使用基于图像的测试工具,例如 Sikuli。

由于最近有一个重复的问题()被问到,我将在这里提供我的答案。

我已经使用 Dynamics CRM 成功实现了 selenium webdriver 自动化。 CRM 与其他网站的主要区别是:

  1. iframe 的使用。请务必切换到包含您要处理的元素的正确框架,例如driver.switchTo().frame(the_frame_id),或者更好的是,使用 ExpectedConditions.frameToBeAvailableAndSwitchToIt(by)
  2. 隐式等待帧
  3. 正如其他人所说,等待加载时间。但是我发现 CRM 在加载时实际上显示了很好的旋转 "Loading..." 消息,而不是硬睡眠或显式等待。因此,为了在执行进一步操作之前等待消息消失,我使用了 ExpectedConditions.invisibilityOfElementLocated(locator_of_loading_dialog);或者对于一些更棘手的问题,其中可见性由 display 以外的不同属性值驱动,请尝试 ExpectedConditions.attributeContains(locator, attribute, value) - 例如 ExpectedConditions.attributeContains(By.id("some_id"), "style", "visibility: hidden") .

除此之外,它只是另一个网站。

虽然 CRM 作为一个 SPA 会很辛苦,但你可以找到出路。这是我对类似问题的回答,为了避免复制,请看这里