通过多个类名查找 div 元素?

新手上路,请多包涵

<div class="value test" /> 我想识别那个网络元素。它只定义了这两个类。我无法执行以下操作,因为 className 不采用空格分隔值。什么是替代品?

 @FindBy(className = "value test")
@CacheLookup
private WebElement test;

原文由 membersound 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 709
2 个回答

我不认为 barak manos 的回答已经完全解释了它。

想象一下,我们有以下几个元素:

  1. <div class="value test"></div>
  2. <div class="value test "></div>
  3. <div class="first value test last"></div>
  4. <div class="test value"></div>

XPath如何匹配

  • 仅匹配 1(完全匹配),barak 的答案
  driver.findElement(By.xpath("//div[@class='value test']"));

  • 匹配 1、2 和 3(匹配类包含 value test ,类顺序很重要)
   driver.findElement(By.xpath("//div[contains(@class, 'value test')]"));

  • 匹配 1、2、3 和 4(只要元素具有类 valuetest
   driver.findElement(By.xpath("//div[contains(@class, 'value') and contains(@class, 'test')]"));

此外,在这种情况下,Css Selector 总是支持 XPath(快速、简洁、原生)。

  • 第 1 场比赛
  driver.findElement(By.cssSelector("div[class='value test']"));

  • 第 1、2 和 3 场比赛
  driver.findElement(By.cssSelector("div[class*='value test']"));

  • 第 1、2、3 和 4 场比赛
  driver.findElement(By.cssSelector("div.value.test"));

原文由 Yi Zeng 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试这个:

 test = driver.findElement(By.xpath("//div[@class='value test']"));

原文由 barak manos 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题