【问题标题】:Multiple Conditions while finding a web element in selenium web driver在 selenium web 驱动程序中查找 web 元素时的多个条件
【发布时间】:2017-12-20 23:23:05
【问题描述】:

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列的升序和降序。 第 2 行代码是单击第 1 列过滤器图标。我的意图是单击第 10 列过滤器图标

请帮忙

【问题讨论】:

  • 请阅读How to Ask,尤其是关于minimal reproducible example(MCVE)和How much research effort is expected?的部分,这将帮助您调试自己的程序并自己解决问题。如果您这样做并且仍然卡住,您可以返回并发布您的 MCVE、您尝试过的内容以及执行结果(包括任何错误消息),以便我们更好地帮助您。还提供指向页面和/或相关 HTML 的链接。
  • 请粘贴您的 html dom。然后编辑问题,说明您要单击哪个元素
  • 您正在将 xpath 传递给 css 选择器。不起作用。你会得到无效的选择器异常。
  • 这里是检查元素代码
  • 检查元素代码 状态

标签: java selenium xpath


【解决方案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();

【讨论】:

  • 将 By 更改为 xpath 方法。或者删除 @ 和 // 等来制作一个 CSS 选择器。
  • 想要为 状态
  • @Akhil 使用您尝试自动化的确切手动步骤以及相关 HTML 更新问题。
  • 这不起作用 driver.findElement(By.cssSelector("span[class*='k-icon k-filter' @title='Status']")).click();作为无效选择器抛出错误:指定了无效或非法的选择器
  • @DebanjanB,网格的第 10 列有一个过滤器图标,我想点击那个过滤器图标,如果我使用代码“span[class*='k-icon k-filter ' ,它正在单击网格第一列的图标,所以我想给出第二个条件,它将检查名称是否为状态。
猜你喜欢
  • 1970-01-01
  • 2016-09-28
  • 2021-05-23
  • 2023-03-21
  • 2017-10-16
  • 2023-03-13
  • 1970-01-01
  • 2015-12-16
  • 2015-09-19
相关资源
最近更新 更多