小编典典

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

css

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

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

阅读 594

收藏
2020-05-16

共1个答案

小编典典

我认为巴拉克·马诺斯的答案不能完全解释这一点。

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

  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个(完全匹配),巴拉克的答案

    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(只要元素具有class 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"));
    
2020-05-16