Javascript Selenium和ExtJS5网格选择

Javascript Selenium和ExtJS5网格选择,javascript,selenium,extjs,xpath,Javascript,Selenium,Extjs,Xpath,我试图找到一种使用Selenium定位ExtJS5GridPanel的方法。我可以使用Xpath访问gridpanel,但这并不理想。这是因为我在同一级别上有两个网格,所以这两个网格的Xpath结果似乎是相同的。 在Selenium中,我为我的应用程序设置了PageObjects,下面是我目前如何找到网格的: public static WebElement sourceGrid(WebDriver driver){ element = driver.findElement(By.xpa

我试图找到一种使用Selenium定位ExtJS5GridPanel的方法。我可以使用Xpath访问gridpanel,但这并不理想。这是因为我在同一级别上有两个网格,所以这两个网格的Xpath结果似乎是相同的。 在Selenium中,我为我的应用程序设置了PageObjects,下面是我目前如何找到网格的:

public static WebElement sourceGrid(WebDriver driver){
    element = driver.findElement(By.xpath("//div[2]/div/div/div/div[3]/div/div[2]/table/tbody/tr/td/div"));
    return element;
}
我确实在网格上有一个cls属性,但它永远找不到它。下面是DOM的外观:

<div id="t_precautionsSourceGrid-body" data-ref="body" class="x-panel-body x-grid-with-row-lines x-grid-body x-panel-body-default x-panel-body-default x-noborder-rbl" role="presentation" style="width: 506px; left: 0px; top: 48px; height: 734px;">
   <div class="x-grid-view x-grid-with-row-lines x-fit-item x-grid-view-default x-unselectable" id="tableview-1168" tabindex="0" componentid="tableview-1168" style="overflow: auto; margin: 0px; width: 506px; height: 733px;">
      <div role="presentation" style="width: 1px; height: 1px; margin-top: -1px; position: absolute; left: 0px; display: none;" id="ext-element-11"></div>
      <div class="x-grid-item-container" style="width: 506px; transform: translate3d(0px, 0px, 0px);">
         <table id="tableview-1168-record-439" data-boundview="tableview-1168" data-recordid="439" data-recordindex="0" class="x-grid-item x-grid-item-selected" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">C.Diff (Clostridium Difficile)</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
         <table id="tableview-1168-record-440" data-boundview="tableview-1168" data-recordid="440" data-recordindex="1" class="x-grid-item" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">Combative</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
         <table id="tableview-1168-record-441" data-boundview="tableview-1168" data-recordid="441" data-recordindex="2" class="x-grid-item" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">Falls Alert</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
         <table id="tableview-1168-record-442" data-boundview="tableview-1168" data-recordid="442" data-recordindex="3" class="x-grid-item" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">MRSA (Methicillin Resistant Staphylococcus Aureus)</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
         <table id="tableview-1168-record-443" data-boundview="tableview-1168" data-recordid="443" data-recordindex="4" class="x-grid-item" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">Respiratory</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
         <table id="tableview-1168-record-444" data-boundview="tableview-1168" data-recordid="444" data-recordindex="5" class="x-grid-item" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">Reverse Isolation</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
         <table id="tableview-1168-record-445" data-boundview="tableview-1168" data-recordid="445" data-recordindex="6" class="x-grid-item" cellpadding="0" cellspacing="0" style=";width:0">
            <tbody>
               <tr class="  x-grid-row">
                  <td class="x-grid-cell x-grid-td x-grid-cell-gridcolumn-1166 x-grid-cell-first x-unselectable" style="width:476px;" tabindex="-1" data-columnid="gridcolumn-1166">
                     <div unselectable="on" class="x-grid-cell-inner " style="text-align:left;">VRE (Vancomycin Resistant Enterococci)</div>
                  </td>
                  <td class="x-grid-cell x-grid-td x-grid-cell-actioncolumn-1167  x-action-col-cell x-grid-cell-last x-unselectable" style="width:30px;" tabindex="-1" data-columnid="actioncolumn-1167">
                     <div unselectable="on" class="x-grid-cell-inner x-grid-cell-inner-action-col" style="text-align:left;"><img role="button" alt="" src="Images/add.png" class="x-action-col-icon x-action-col-0  " data-qtip="Add"></div>
                  </td>
               </tr>
            </tbody>
         </table>
      </div>
   </div>
</div>

艰难梭菌
好斗的
下降警报
耐甲氧西林金黄色葡萄球菌
呼吸的
反向隔离
耐万古霉素肠球菌(VRE)
我知道这几乎是不可能看到的,有什么建议如何使它更好地格式化在这里

所以本质上我希望测试进入网格,单击第一个元素,然后检查以确保它在第二个网格中。这是假设一个新的源网格和选定的网格开始

我尝试过许多不同的方法。使用Jsoup将静态id元素添加到网格列中,尝试为EXT组件创建包装器。我还没有弄清楚如何让Sencha库在Eclipse(Luna)中工作,如果我可以工作,那么我就可以访问Ext.ComponentQuery等


我猜这可能是两个问题

当ExtJS为每一行创建一个表时,您可以使用以下xpath

//div[@class='x-grid-item-container']//table[1]//td[1]/div
其中
//div[@x-grid-item-container']
将找到网格,
table
是这里的行,我想得到第一行,所以我使用
1
作为索引,后面的
td
是行中的列。我想使用
1st
列,所以我使用
td[1]/div


因此,上面的xpath将从第一个可见网格中找到第一行第一列,以防其他人阅读。这就是我到目前为止提出的,使用cls属性使xpath更易于理解

 driver.findElement(By.xpath("//div[@class='x-panel <cls attribute name> x-box-item x-panel-default x-grid']/div[4]/div/div/table/tbody/tr/td/div"));

然后抓住网格面板上的任何东西。我没有见过一个使用这种链接方法的例子,也没有意识到这是可能的

使用class.x-grid-view up div使用此//div[contains(@class,'.x-grid-view up')]/parents谢谢您的编辑Saifur@raghavendra您有更多关于此的文档吗?类或xpath的特定字符串不适合我,但它可能是我需要的正确方向。谢谢你,你可以通过谢谢你,玛丹。这确实对我有用。我还有一个问题。利用这个想法,我试图使用网格上的cls属性作为起点。到目前为止我一点运气都没有,你知道这可能吗//div[@class='t-precautionsSourceGrid']//table[1]//td[1]//div是我正在尝试的。另外,如果类和表之间有许多div,它们是否需要包含在xpath字符串中?不需要。只需阅读中的单斜杠和双斜杠
driver.findElement(By.className("<cls attribute>"))
            .findElement(By.className("x-grid-item-container"))
            .findElement(By.className("x-grid-cell"));
driver.findElement(By.className("t-allergiesSourceGrid"))
            .findElement(By.className("x-grid-item-container"))
            .findElement**s**(By.className("x-grid-cell"));