Selenium和ExtJS 5网格选择
Selenium and ExtJS 5 Grid selection
我正试图找到一种方法来定位EXT JS 5 Gridpanel使用硒。我可以使用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>
我知道这几乎不可能看,有什么建议如何使它的格式更好吗?
所以本质上,我希望测试到达网格,单击第一个元素,然后检查以确保它在第二个网格中。这是假设一个新的源网格和选择的网格开始。
我已经尝试了许多不同的方法。向网格列添加静态id元素,使用Jsoup,尝试为EXT组件创建包装器。我还没有弄清楚如何让Sencha库在Eclipse(Luna)中工作,如果我能工作,那么我就可以访问Ext.ComponentQuery等东西。
我猜这可能是两个问题。
ExtJS为每一行创建一个表,您可以使用以下xpath
//div[@class='x-grid-item-container']//table[1]//td[1]/div
其中//div[@class='x-grid-item-container']
将找到网格,table
是这里的行,我想获得第一行,所以我用1
作为索引,然后td
是行中的列。我想用1st
column所以我用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"));
它仍然很丑,但它的功能。
—edit—现在轮到让我觉得自己很蠢的部分了。你可以使用:
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"));
然后在GridPanel中抓取任何东西。我还没有看到一个使用这种链接方法的例子,也没有意识到这是可能的。
- 如何在Angular UI网格中选择下一行
- ui网格将单元格显示为选择标记
- 在angularjs UI网格列中选择下拉菜单不适用于外部editcellTemplate
- KendoUI网格:如何选择所有页面数据
- 子网格:限制用户仅选择一条记录
- AngularJs的Kendo UI:当用户在网格中选择行时,如何在文本框字段上绑定数据
- 淘汰JS与Kendo UI网格忘记用户'的选择
- 在Knockout剑道网格中的Change上选择失去孩子的标签
- 通过标签选择过滤平行网格
- Angularjs ng网格的选择单元格未选择正确的值
- 角度 - ng 网格通过分组按语法选择下一个/上一个项目
- 大纲-细节剑道 UI 网格(在主网格中选择行时,获取详细信息网格中的条目)
- 如何在更改数据源后保留 UI 网格选择
- 剑道网格 - 选择行并显示与行相关的值
- ExtJS网格选择模型
- 剑道网格错误-网格.选择不是函数为什么
- 光滑的网格选择框与内联编辑,显示文本后选择值
- Selenium和ExtJS 5网格选择
- 剑道网格选择整行
- Angular UI网格-选择所有基于过滤器