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

Automated tests 如何在Dynamics 365内部部署中使用EasyRepro自动登录,automated-tests,dynamics-crm,devops,dynamics-365,easyrepro,Automated Tests,Dynamics Crm,Devops,Dynamics 365,Easyrepro,我正在尝试在Dynamics 365内部部署中使用EasyRepro进行自动化UI测试。我通过一个问题成功地完成了测试,我无法自动登录到我的Dynamics 365组织。下面是我使用的代码: var client = new WebClient(TestSettings.Options); using (var xrmApp = new XrmApp(client)) { xrmApp.OnlineLogin.Login

我正在尝试在Dynamics 365内部部署中使用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有没有办法自动登录?

根据文档,您可以在
app.config
中添加凭据,如下所示:

<add key="OnlineUsername" value="name@name.onmicrosoft.com" />
<add key="OnlinePassword" value="*********" />
<add key="OnlineCrmUrl" value="https://org.crm.dynamics.com/" />

本文讨论了内部CRM实例自动登录脚本的登录部分

这就是我如何绕过Windows身份验证登录(无法在我们的内部CRM安装中使用ADFS登录)。刚刚定义了登录元素:


我希望您是,但请确保您正在使用回购。

您已经尝试过,但仍然需要我通过提示登录对话框登录。如果我尝试登录Dynamics 365 Online,它会工作,但是对于Dynamics 365内部部署,它仍然不工作。在Easyrepro中,xrmBrowser用于内部部署,xrmApp用于UCI。
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."); });
            }