首页 > 解决方案 > 自定义 XPATH 以单击复选框元素

问题描述

希望有人可以指导我点击“活动”复选框的正确方向,问题是应用程序默认选中“活动”,因此过滤器下拉菜单存储“活动”选项,因此我的 xpath 看到两个“活动”并单击第一个是落下。

driver.findElement(By.xpath("//span[contains(text(),'Active')]")).click();

应用截图

下拉列表的 HTML 图片

当我使用上面的代码时,同时存在两个元素,因此单击了下拉菜单,而不是实际取消选中“活动”复选框。希望这能让你清楚。

标签: javareact-nativeselenium

解决方案


除了使用contains()进行部分文本匹配之外,您还可以使用精确文本匹配,并且可以使用以下Locator Strategies

  • 主动

    driver.findElement(By.xpath("//span[text()='Active']")).click();
    
  • 非活动

    driver.findElement(By.xpath("//span[text()='Inactive']")).click();
    

但是,由于该元素是React Native元素,因此click()您需要在该元素上诱导WebDriverWait并且elementToBeClickable()您可以使用以下任一Locator Strategies

  • 主动

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Active']"))).click();
    
  • 非活动

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[text()='Inactive']"))).click();
    

推荐阅读