javascript - 需要关于过滤器图标编码的建议

标签 javascript java selenium selenium-webdriver selenium-chromedriver

我需要在 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 和包含文本 PackageDetailhref 属性的元素。

<小时/>

编辑

根据最新的图像,我已经找出问题所在。实际上,整个网格位于 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/

相关文章:

javascript - 未捕获( promise )错误 : Container is not defined

java - 为什么在传递 String 参数时得到不正确的结果集?

java - 复杂性: Conditional operator vs if-else

java - 用于 Java 应用程序的 Docker 镜像中的 Selenium

javascript - 如何单击按钮并触发 webdriver 中的 javascript 函数?

javascript - Nodejs 中如何只选择 10% 的请求?

javascript - 带有ajax错误消息的表单提交

javascript - javascript 忽略字符串中的字符

java - 如何在依赖检查之前运行maven插件

java - Chromedriver 在 selenium web 驱动程序中打开一个空白页面而不是目标网站