我需要在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>
答案 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();