【问题标题】:Need suggestion to code for filter icon需要建议为过滤器图标编码
【发布时间】:2015-07-02 00:38:47
【问题描述】:

我需要在 selenium web drive java 中编写以下代码。我正在使用 java 日食。我正在尝试查找过滤器菜单的元素。单击过滤器图标后,将显示过滤器菜单。当我尝试通过使用萤火虫单击过滤器图标来查找元素时,下面的代码突出显示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>

【问题讨论】:

  • 似乎有多个 &lt;span class="k-icon k-filter"/&gt; 标签可能是您的问题的原因。您能否从上面告诉您要定位和/或单击哪个过滤器图标
  • 我想使用第一个过滤器包详细信息

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


【解决方案1】:

尝试使用以下任一 Java 代码来单击第一个过滤器图标“包详细信息”:

//a[.='Package Detail']

它将选择带有标签a 和确切innerHTML/text 为Package Detail 的元素。

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

它将选择带有标签ahref属性包含文本PackageDetail的元素。


编辑

根据最新的图像,我已经找出了问题所在。实际上,整个网格都在一个 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();

【讨论】:

  • 您好,感谢您的更新,但它不起作用我收到错误消息,因为无法找到元素
  • 在这种情况下,请尝试使用这些 xpath //th[@data-title='Package Detail']//th[@data-title='Package Detail']//span[@class='k-icon k-filter'] 中的任何一个。如果它仍然不起作用,请upload a screenshot of the filter using imgur 并添加到您的问题中。需要看看过滤器的样子,可能会变得更容易整理出来。
  • 谢谢.. 从屏幕截图看来,上面的代码(在 cmets 中)应该可以工作。无论如何,您能否尝试以下任一 xpath://a[contains(@href,'PackageDetail')]/preceding-sibling::a OR //th[@data-title='Package Detail']//span[@class='k-icon k-filter']/..
  • 好的..你能告诉你遇到了什么错误/异常吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2011-04-10
相关资源
最近更新 更多