需要对过滤器图标编码的建议
Need suggestion to code for filter icon
我需要在 selenium 网络驱动器 java 中编写以下代码。我正在使用 java 日食。我试图找到过滤器菜单的元素。单击过滤器图标后,将显示过滤器菜单。当我尝试通过使用 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>
尝试以下任一 Java 代码点击第一个过滤器图标 "Package Detail":
//a[.='Package Detail']
它将 select 带有标签 a
且精确 innerHTML/text 的元素作为 Package Detail
。
或
//a[contains(@href,'PackageDetail')]
它将 select 带有标签 a
和包含文本 PackageDetail
.
的 href
属性的元素
编辑
根据最新的图片,我已经弄清楚问题出在哪里了。实际上,整个网格都在一个 id 为 bodyframe
的框架内。因此,您必须先切换到框架,然后再单击过滤器图标。
1- 切换到框架:
driver.switchTo().frame("bodyframe");
2- 单击过滤器图标:
driver.findElement(By.xpath("//a[contains(@href,'PackageDetail')]/preceding-sibling::a")).click();
或
driver.findElement(By.xpath("//th[@data-title='Package Detail']//span[@class='k-icon k-filter']/..")).click();
或
driver.findElement(By.xpath("//th[@data-title='Package Detail']//span[@class='k-icon k-filter']")).click();
我需要在 selenium 网络驱动器 java 中编写以下代码。我正在使用 java 日食。我试图找到过滤器菜单的元素。单击过滤器图标后,将显示过滤器菜单。当我尝试通过使用 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>
尝试以下任一 Java 代码点击第一个过滤器图标 "Package Detail":
//a[.='Package Detail']
它将 select 带有标签 a
且精确 innerHTML/text 的元素作为 Package Detail
。
或
//a[contains(@href,'PackageDetail')]
它将 select 带有标签 a
和包含文本 PackageDetail
.
href
属性的元素
编辑
根据最新的图片,我已经弄清楚问题出在哪里了。实际上,整个网格都在一个 id 为 bodyframe
的框架内。因此,您必须先切换到框架,然后再单击过滤器图标。
1- 切换到框架:
driver.switchTo().frame("bodyframe");
2- 单击过滤器图标:
driver.findElement(By.xpath("//a[contains(@href,'PackageDetail')]/preceding-sibling::a")).click();
或
driver.findElement(By.xpath("//th[@data-title='Package Detail']//span[@class='k-icon k-filter']/..")).click();
或
driver.findElement(By.xpath("//th[@data-title='Package Detail']//span[@class='k-icon k-filter']")).click();