在selenium web驱动程序中查找Web元素时的多个条件

时间:2017-12-20 23:23:06

标签: java selenium xpath

inspect元素代码如下所示:

*<*th class="k-header k-filterable k-with-icon" data-field="Status" data-index="8" data-title="Status" scope="col" style="overflow: visible; white-space: normal;font-weight: bold;width:70px;vertical-align:top;" data-role="columnsorter" id="grdAutoLaborOps_active_cell" aria-describedby="grdAutoLaborOps_active_cell">
    <a class="k-grid-filter" href="javascript:void(0)" tabindex="-1">
    <*span class="k-icon k-filter">
         </span></a><*a class="k-link" href="/tracs/tracs/LaborOps/AutoLaborOps_Read?grdAutoLaborOps-sort=Status-asc" tabindex="-1">Status</a>
</th>

网格的第10列有一个过滤器图标,如果我使用下面的代码,我想点击该过滤器图标

        driver.findElement(By.cssSelector("th.k-header.k-filterable.k-with-icon[data-title=Status]")).click();
        driver.findElement(By.cssSelector("span[class*='k-icon k-filter']")).click();

第一行代码点击第10列,它将设置为第10列的升序和降序。 第二行代码点击第一列过滤器图标。我的内容是点击第10列过滤器图标

请帮助

1 个答案:

答案 0 :(得分:1)

你快到了。您需要使用@ attribute_name 添加 data-title ,而不是cssSelector xpath cssSelector }。您可以使用以下任一选项:

  • driver.findElement(By.cssSelector("th.k-header.k-filterable.k-with-icon[data-title=Status]")).click();

    xpath
  • driver.findElement(By.xpath("//th[@class='k-header k-filterable k-with-icon' and @data-title='Status']")).click();

    10th column, ascending and descending order

更新:

如果我已更好地理解您的问题更新,则以下行会点击driver.findElement(By.cssSelector("th.k-header.k-filterable.k-with-icon[data-title=Status]")).click(); ,这是完美的。

10th column filter icon

因此,要点击driver.findElement(By.cssSelector("th.k-header.k-filterable.k-with-icon[data-title=Status] span.k-icon.k-filter")).click(); ,您可以使用以下代码行:

int i = 0;
while (i<1) 
{
  String[] jobsNumbers = numbers.toArray(new String[numbers.size()]);
  new SendMessage().execute(jobsNumbers);
  i++;
}