我需要在 selenium web 驱动器 java 中编写以下代码。我正在使用java eclipse。我正在尝试找到“过滤器”菜单的元素。单击过滤器图标后,将显示过滤器菜单。当我尝试使用 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']
它将选择带有标签 a
的元素和精确的 insideHTML/文本作为 Package Detail
。
或
//a[contains(@href,'PackageDetail')]
它将选择带有标签 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();
关于javascript - 需要关于过滤器图标编码的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173859/