zoukankan      html  css  js  c++  java
  • How to Set Value in A Regarding Field Using Easyrepro in Dynamics CRM / PowerApps

    How to Set Value in A Regarding Field Using Easyrepro in Dynamics CRM

    Introduction

    Using Easyrepro we can perform UI Automation testing in Dynamics CRM by setting values in fields of different datatypes.

    Recently while working with Easyrepro we wanted to set a value in the Regarding field of the Email record.

    However, the code below which is used to set the value in a lookup field doesn’t seem to work for the Regarding field.

    xrmApp.Entity.SetValue(new LookupItem { Name = “regardingobjectid”, Value = “Abraham McCormick” });

    Note: In our scenario, Abraham McCormick is the name of the contact record regarding which we want to create an email.

    Now, let us understand our piece of code.

    Step 1:

    Staying on the current window is necessary to find the elements. The below code will make sure that we are on the current window where the field is present.

    var xrmBrowser = client.Browser;

    var win = xrmBrowser.Driver.SwitchTo().Window(xrmBrowser.Driver.CurrentWindowHandle);

    xrmApp.ThinkTime(5000);

    Step 2:

    First, we need to validate if we have the correct Regarding element for access.

    To get the Regarding field element you can quickly check in the dev tool as below

    Regarding field

    And then use the below if statement to validate the existence of the element.

    if (win.HasElement(By.XPath(“.//input[@aria-label=’Regarding, Lookup’]”)))

    {

    }

    Step 3:

    Once the existence of the Regarding field element is validated in Step 2, find the clickable element for the same using the below piece of code which needs to be added inside the if statement from Step 2.

    //Find the clickable element of the Regarding field

    var regardingElements = win.FindClickable(By.XPath(“.//input[@aria-label=’Regarding, Lookup’]”));

    Step 4:

    Now once the element is found in Step 3 you just need to access it by clicking on it and then pass the record name which you want to set as regarding.

    xrmApp.ThinkTime(5000);

    regardingElements.Click();

    regardingElements.SendKeys(recordName);//Set the name of the record which you want to set

    xrmApp.ThinkTime(5000);

    Step 5:

    Once the name of the record is passed in the Regarding field from the previous step you will see a drop down with the actual record in it as shown in the screenshot below.

    How to set value in aregarding field using Easyrepro in Dynamics CRM

    And the below lines of code select the respective record from the list.

    Note: There could be chances of being more than 1 record with the same name. So to select the correct one from the list you will have to use the number to select the right element as can be seen in the code below. The number is optional to set the regarding field. If not provided, then it will choose the record at the 0th position by default.

    win = xrmBrowser.Driver.SwitchTo().Window(xrmBrowser.Driver.CurrentWindowHandle);

    xrmApp.ThinkTime(5000);

    //Find the element in the dropdown for which the name was passed

    if (win.HasElement(By.XPath(“//li[contains(@aria-label,‘” + recordName + “‘)]”)))

    {

    var records = win.FindElements(By.XPath(“//li[contains(@aria-label,'” + recordName + “‘)]”));

    if (records.Count> number)

        {

    records[number].Click();

        }

    elseif (records.Count>0)

        {

    records[0].Click();

        }

    xrmApp.ThinkTime(5000);

    }

    And as can be seen from the screenshot below the value gets set in the Regarding field.

    How to set value in aregarding field using Easyrepro in Dynamics CRM

    We have created a generic function named SetRegarding with 4 parameters as below, which can be seen at the end of the blog post.
    • XrmApp xrmApp- This will carry forward the object of XrmApp from the test method.(Required)
    • WebClient client – This will carry forward the object of WebClient from the test method. (Required)
     string recordName-This will hold the name of the record which we want to set as regarding. In our scenario Abraham McCormick is the name of the record.(Required)
    • int number – This will hold a numeric value which shall be used to select a record if there are more than 1 record with the same name. (Optional)

    So in the test method after you have set the other attribute values, use our function to set the value in the Regardingfield as below.

    SetRegarding(xrmApp, client, “Abraham McCormick”, 0);

    Given below is the generic function to set the value of the Regarding field while creating an Email record:

    ///<summary>

    /// Generic function to set the regarding field

    ///</summary>

    ///<param name=”xrmApp“>This will carry forward the object of XrmApp from the test method.</param>

    ///<param name=”client“>This will carry forward the object of WebClient from the test method.</param>

    ///<param name=”recordName“>This will hold the name of the record which we want to set as regarding.</param>

    ///<param name=”number“>This will hold a numeric value which shall be used to select a record if there are more than 1 records with same name. In case no value is passed by default  the record at the 0th position will get set</param>

    public void SetRegarding(XrmApp xrmApp, WebClient client, string recordName, int number = 0)

    {

    //Local Variables

    string functionName = “setRegarding”;

    try

      {

    var xrmBrowser = client.Browser;

    var win = xrmBrowser.Driver.SwitchTo().Window(xrmBrowser.Driver.CurrentWindowHandle);

    xrmApp.ThinkTime(5000);

    if (win.HasElement(By.XPath(“.//input[@aria-label=’Regarding, Lookup’]”)))

         {

    var regardingElements = win.FindClickable(By.XPath(“.//input[@aria-label=’Regarding, Lookup’]”));

    xrmApp.ThinkTime(5000);

    regardingElements.Click();  

    regardingElements.SendKeys(recordName); //Set the name of the record which you want to set

    xrmApp.ThinkTime(5000);

    win = xrmBrowser.Driver.SwitchTo().Window(xrmBrowser.Driver.CurrentWindowHandle);

    xrmApp.ThinkTime(5000);

    if (win.HasElement(By.XPath(“//li[contains(@aria-label,'” + recordName + “‘)]”)))

           {                        

    var records = win.FindElements(By.XPath(“//li[contains(@aria-label,'” + recordName + “‘)]”));

    if (records.Count> number)

              {

    records[number].Click();

              }

    elseif (records.Count> 0)

    {

    records[0].Click();

    }

    xrmApp.ThinkTime(5000);

          }

        }

      }

    catch (Exception ex)

      {

    throw new Exception(functionName + ” :: “ + ex.Message);

      }

    }

    Conclusion

    In this way set value in a regarding field using Easyrepro in Dynamics CRM.

  • 相关阅读:
    模拟出栈
    全排列 next_permutation 用法
    区间覆盖
    BFS GPLT L2-016 愿天下有情人都是失散多年的兄妹
    GPLT L2-014 列车调度
    图的联通分量个数统计(判断图是否联通)
    堆排序 GPLT L2-012 关于堆的判断
    牛客挑战赛 30 A 小G数数
    由树的中后序遍历求树的前层序遍历
    【HDOJ4699】Editor(对顶栈,模拟)
  • 原文地址:https://www.cnblogs.com/lingdanglfw/p/15062666.html
Copyright © 2011-2022 走看看