automated-tests - 如何在内部部署的 Dynamics 365 中使用 EasyRepro 自动登录

标签 automated-tests dynamics-crm devops dynamics-365 easyrepro

我正在尝试在 Dynamics 365 On-Premise 中使用 EasyRepro 进行自动化 UI 测试。我设法通过一个问题进行了测试,我无法自动登录到我的 Dynamics 365 组织。以下是我使用的代码:

var client = new WebClient(TestSettings.Options);
            using (var xrmApp = new XrmApp(client))
            {
              xrmApp.OnlineLogin.Login(_xrmUri, _username, _password);
              xrmApp.Navigation.OpenSubArea("My Work", "Companies");
              xrmApp.CommandBar.ClickCommand("New");
              xrmApp.Entity.SetValue("name", TestSettings.GetRandomString(5,15));
              xrmApp.Entity.Save();
             }

当我运行它时,新打开的chrome页面仍然会要求我输入我的凭据,在我输入我的凭据(CRM用户名/密码)后,脚本将顺利运行。

因为,我计划将其用作我们自动化测试的一部分。 EasyRepro 有没有办法自动登录?

最佳答案

github issue谈本地CRM实例自动登录脚本的登录部分。

This is how I got around Windows Authentication Login (Could not use the ADFS Login on our On-Premise CRM Install). Just defined the Login elements:


using (var xrmBrowser = new Browser(TestSettings.Options))
{
DateTime dt = DateTime.Now;
String xpath = "//*[@id='search']";
// String logoffcrm = "#navBarUserInfoTextId > span.navTabButtonUserInfoText.navTabButtonUserInfoCompany";
Actions keyAction = new Actions(xrmBrowser.Driver);
xrmBrowser.GoToXrmUri(_xrmUri);
xrmBrowser.Driver.FindElement(By.Id("ContentPlaceHolder1_UsernameTextBox")).SendKeys(_username);
xrmBrowser.ThinkTime(1000);
xrmBrowser.Driver.FindElement(By.Id("ContentPlaceHolder1_PasswordTextBox")).SendKeys(_password);
xrmBrowser.ThinkTime(1000);

            try
            {
                if (_browser == "Chrome")
                {
                    xrmBrowser.Driver.FindElement(By.Id("ContentPlaceHolder1_SubmitButton")).Click();
                }

                if (_browser == "IE")
                {
                    xrmBrowser.Driver.FindElement(By.Id("ContentPlaceHolder1_SubmitButton")).Submit();
                }

                xrmBrowser.Driver.WaitUntilVisible(By.XPath(xpath)
                        , new TimeSpan(0, 0, 60),
              e => { xrmBrowser.Driver.WaitForPageToLoad(); },
              f => { throw new Exception("Login failed."); });
            }
            catch (StaleElementReferenceException)
            {
                //old element has gone

                //Console.WriteLine(g);
                xrmBrowser.Driver.WaitUntilVisible(By.XPath(xpath)
                       , new TimeSpan(0, 0, 60),
             e => { xrmBrowser.Driver.WaitForPageToLoad(); },
             f => { throw new Exception("Login failed."); });
            }

我希望你是,但请确保你正在使用 EasyRepro Release Branch - OnPremise repo 。

关于automated-tests - 如何在内部部署的 Dynamics 365 中使用 EasyRepro 自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60056050/

相关文章:

selenium - Nightwatchjs:如何在不创建错误/失败/异常的情况下检查元素是否存在

windows - 如何在 Windows 环境中模拟磁盘已满错误?

ibm-cloud - 如何在 bluemix 中构建 React Native .ipa 和 .apk 应用程序

unit-testing - Dynamics CRM 2011 模拟

python - Azure DevOps 使用 Python API 添加注释

linux - Ansible 从角色触发 **特定主机** 的任务

selenium - 我是否需要在每个使用 Nancy 的测试用例中使用不同的模块?

testing - 在线自动化测试类(class)

dynamics-crm-2011 - 如何为实体特定(即本地)选项集文本值自动生成早期绑定(bind)属性?

dynamics-crm-2011 - Microsoft Dynamics CRM 2011 更改实体字段数据类型的最佳解决方案