需要建议过滤器图标的代码

时间:2015-07-02 00:38:47

标签: javascript java selenium selenium-webdriver selenium-chromedriver

我需要在selenium web drive java中编写以下代码。我正在使用java eclipse。我正在尝试找到Filter菜单的元素。单击过滤器图标后,将显示过滤器菜单。当我尝试通过使用firebug单击过滤器图标来查找元素时,下面的代码突出显示span class="k-icon k-filter xpath也无效。

<th class="k-header k-filterable k-with-icon" scope="col" data-title="Package Detail" data-index="0" data-field="PackageDetail.Namee" data-role="columnsorter">
 <a class="k-grid-filter" href="javascript:void(0)" tabindex="-1">
  <span class="k-icon k-filter"/>
 </a>
 <a class="k-link" href="/Valiadationrule/GetData?ValiadationruleGrid-sort=PackageDetail.Namee-asc">Package Detail</a>
</th>

<th class="k-header k-filterable k-with-icon" scope="col" data-title="Category" data-index="1" data-field="Category" data-role="columnsorter">
 <a class="k-grid-filter" href="javascript:void(0)" tabindex="-1">
  <span class="k-icon k-filter"/>
</a>
<a class="k-link" href="/Valiadationrule/GetData?ValiadationruleGrid-sort=Category-asc">Category</a>
</th>

<th class="k-header k-filterable k-with-icon" scope="col" data-title="Name" data-index="2" data-field="Name" data-role="columnsorter">
 <a class="k-grid-filter" href="javascript:void(0)" tabindex="-1">
   <span class="k-icon k-filter"/>
 </a>
 <a class="k-link" href="/Valiadationrule/GetData?ValiadationruleGrid-sort=Name-asc">Name</a>
</th>

1 个答案:

答案 0 :(得分:0)

尝试以下 Java 代码之一,点击第一个过滤器图标“Package Detail”:

//a[.='Package Detail']

它会选择标记为a且内部HTML /文本为Package Detail的元素。

//a[contains(@href,'PackageDetail')]

它会选择标记为a的元素和包含文字href的{​​{1}}属性。

修改

根据最新图片,我发现了问题所在。实际上,整个网格位于ID为PackageDetail的框架内。因此,在单击过滤器图标之前,必须先切换到框架。

1-切换到相框:

bodyframe

2-点击过滤器图标:

driver.switchTo().frame("bodyframe");

OR

driver.findElement(By.xpath("//a[contains(@href,'PackageDetail')]/preceding-sibling::a")).click();

OR

driver.findElement(By.xpath("//th[@data-title='Package Detail']//span[@class='k-icon k-filter']/..")).click();