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

标签 java css selenium selenium-webdriver

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

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

最佳答案

我认为 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"));
    

关于java - 通过多个类名查找 div 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713280/

相关文章:

java - 通过拖放重新排序表行?

java - 此 URL 不支持 HTTP 方法 GET WL 12.2.1 上的 Rest-full WS

java - 必须在 <advisor> 上定义 'pointcut' 或 'pointcut-ref' 之一

python - Selenium Python Firefox webdriver : can't modify profile

python - 在 AWS EC2 linux 中运行 selenium webdriver

java - 不同时区的两个 java 日期之间经过的天数

javascript否决特别声明的css样式

CSS: block 的边距顶部影响容器 div

javascript - 单击 Css 显示属性更改时的脚本无法正常工作 Asp.net?

java - 使用selenium获取页面源代码,如何在没有firefox的服务器上使用我的代码?