【问题标题】:Doing Selenium Automation on Lookup Field of MSCRM 2013在 MSCRM 2013 的查找字段上进行 Selenium 自动化
【发布时间】:2015-10-19 03:39:52
【问题描述】:

我无法在 MSCRM 的查找字段上执行 selenium 脚本

我正在尝试从 MSCRM 2011 的查找列表中选择一个项目,它不像下拉列表。如果您单击查找字段上的查找图像,则会打开一个新窗口。在新窗口中显示记录列表,用户必须通过单击对应的复选框来选择特定记录,然后单击“确定”按钮。最后选中的记录会出现在 Lookup 字段中。

查找字段的DOM结构

<td class="Lookup_RenderButton_td" style="width: 21px">
<img id="customerid" class="ms-crm-ImageStrip-btn_off_lookup ms-crm-Lookup" defaultviewid="{A9AF0AB8-861D-4CFA-92A5-C6281FED7FAB}" savedquerytype="" isdisplayonly="false" resolveemailaddress="0" showproperty="1" disableviewpicker="0" disablequickfind="0" disablemru="0" allowfilteroff="1" autoresolve="1" defaulttype="1" lookupstyle="single" lookupbrowse="0" lookuptypeicons="/_imgs/ico_16_1.gif?ver=1287191314:/_imgs/ico_16_2.gif?ver=1287191314" lookuptypenames="account:1:Account,contact:2:Contact" crmattributeid="{09d25a7a-420f-42f7-bad4-192edc51356a}" lookuptypes="1,2" attrpriv="7" attrname="customerid" style="ime-mode:auto" req="2" alt="Click to select a value for Customer Name." src="/_imgs/btn_off_lookup.png" title="Click to select a value for Customer Name." forcesubmit="false">
<a tabindex="-1" onclick="Mscrm.Utilities.click(previousSibling);" href="#" title="Click to select a value for Customer Name."></a>
</td>

下面是包含 CheckBoX 记录集的新窗口的 DOM 结构

<div>
<table id="gridBodyTable" class="ms-crm-List-Data" cellspacing="0" cellpadding="1" border="1" style="border-style:None;border-collapse:collapse;" summary="This list contains 50 Account records." primaryfieldname="name" tabindex="6" numrecords="50" oname="1" allrecordscounted="0" totalrecordcount="5000" morerecords="1" rules="rows">
<colgroup>
<thead>
<tbody>
<tr class="ms-crm-List-Row" otypename="account" otype="1" oid="{BF593B9E-E115-E511-8B6D-E4115BDF9DFD}">
<td class="ms-crm-List-NonDataCell" align="center">
<input id="checkBox_{BF593B9E-E115-E511-8B6D-E4115BDF9DFD}" class="ms-crm-RowCheckBox" type="checkbox" style=" " title=" MEXPrueba Compañia Número 1 " tabindex="6">
</td>

我是堆栈溢出的新手,因此无法上传问题的图像。但是对于点击查找字段,我写在行下:

 driver.findElement(By.id("customerid")).click(); 

Below Lines are  for getting into new window
 driver.switchTo().defaultContent();
handles = driver.getWindowHandles();
         for(String hnd : handles)
         {
             if(!hnd.equals(handle))
             {
                 driver.switchTo().window(hnd);
             }
        }

System.out.println(driver.getTitle());

行下用于选择复选框

driver.findElement(By.xpath("//table/tbody/tr[2]/td[1]/input")).click();

对于查找工作,您可以查看以下链接

http://blogs.msdn.com/b/crm/archive/2013/12/03/what-s-new-in-the-lookup-control-with-microsoft-dynamics-crm-2013.aspx

【问题讨论】:

  • 请贴出你到目前为止所做的代码,并告诉我们你想要达到的目标。
  • @JamieRees:嗨...我更新了问题。你能检查一次吗
  • 上述问题有任何更新吗?
  • @RahilKumar 你如何自动化查找?

标签: user-interface selenium-webdriver automation dynamics-crm


【解决方案1】:

让我们尝试了解您必须执行哪些操作来自动执行查找,您可以做的第一件事是单击打开查找并选择第一个。但是,如果您的列表很长,则很难滚动和选择。我建议输入查找文本并移至其他字段,CRM 将为您解决查找问题。

对于查找,Xpath 将类似于 "//div[@id='new_lookupid']/div[1]" 和输入框 "//input[@id='new_lookupid_ledit']" 您需要在查找上执行 Click&Hold 然后 Release & Click 操作以获取带有插入符号的输入框,然后再键入它,作为

Actions action = new Actions(driver);

action.MoveToElement(driver.FindElement(By.XPath("//div[@id='new_lookupid']/div[1]"))).
ClickAndHold().Release().Click().Perform();

IWebElement typeIntoLookup= driver.FindElement(By.XPath("//input[@id='new_lookupid_ledit']"));

   //send keys        
       typeIntoLookup.SendKeys("ElementofLookup"); //the lookup text

我看到你是用 java 做的,上面的例子是用 C# 做的,所以期待语法差异,但它在 VS2015 中对我有用,希望它对你有用。

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多