java - 无法使用::before 通过 div 内的 xpath 获取元素

标签 java selenium xpath web-scraping pseudo-element

我需要使用 Web 驱动程序对象获取 Web 元素列表

findElements(By.xpath(""));

我通过使用 xpath 作为 //*[@class=\"providers-list clearfix\"] 来获取列表但是,每当我尝试在

中获取元素时,都会出现错误
<div class="providers-list clearfix">::before 
  <div class="data-container">..</div>
</div>

这个 xpath 给我错误:

//[@class=\"data-container\"]" as no such element: Unable to locate element: {"method":"xpath","selector":"//[@class="data-container"]"}

最佳答案

存在 ,例如::before 意味着该元素是:

  • 样式或
  • 插入到某些内容之前

因此,该元素本质上是动态的,要识别该元素,您必须引发 WebDriverWait 以获得所需的 visibilityOfElementLocated() 并且您可以使用以下任一 Locator Strategies :

  • css选择器:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.providers-list.clearfix div.data-container")));
    
  • xpath:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='providers-list clearfix']//div[@class='data-container']")));
    

关于java - 无法使用::before 通过 div 内的 xpath 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60360940/

相关文章:

java - 在java中显示一定数量的空格后的符号

java - Spring RestTemplate 配置策略从单个 API 调用多个 rest 服务

xml - XQuery [value()] : 'value()' requires a singleton (or empty sequence), 找到类型为 'xdt:untypedAtomic *' 的操作数

python-3.x - 通过href属性的一部分查找元素

xml - 两个元素之间的 XPath

java - 如何处理时区来计算滞后

javascript - 为什么我的 jQuery 代码 POST 在我的 URL 中返回查询字符串?

java - Selenium 处理 java 中相同类型的重复 xpath

java - Cucumber Scenario Outline 只运行了一次,即使它有 3 个场景

python - 如何通过多个文本字符串查找元素?