Как автоматически войти в систему с помощью EasyRepro в Dynamics 365 на месте - PullRequest
4 голосов
/ 04 февраля 2020

Я пытаюсь выполнить автоматическое тестирование пользовательского интерфейса с помощью EasyRepro в Dynamics 365 On-Premise. Мне удалось протестировать с одной проблемой, я не могу автоматически войти в мою организацию 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 для автоматического входа?

Ответы [ 2 ]

5 голосов
/ 07 февраля 2020

В этой проблеме github рассказывается о части входа в систему для локальных автоматов экземпляра CRM c сценариев входа в систему.

Так я обошел Windows Аутентификация входа в систему (Не удалось использовать вход в систему ADFS при нашей локальной установке CRM). Только что определили элементы Login:

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.

0 голосов
/ 07 февраля 2020

Согласно документам, вы можете добавить учетные данные в app.config примерно так:

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

Источник: https://github.com/Microsoft/EasyRepro

...