【问题标题】:Not able to get element by xpath inside div with ::before无法通过 xpath 在 div 中使用 ::before 获取元素
【发布时间】:2020-06-07 04:46:42
【问题描述】:

我需要使用网络驱动对象来获取网络元素列表

findElements(By.xpath(""));

我通过将 xpath 用作//*[@class=\"providers-list clearfix\"] 来获取列表。但是,每当我尝试在其中获取元素时都会出错

<div class="providers-list clearfix">::before 
  <div class="data-container">..</div>
</div>

这个 xpath 给了我错误:

//[@class=\"data-container\"]" 因为没有这样的元素:无法找到元素:{"method":"xpath","selector":"//[@class="数据容器"]"}

【问题讨论】:

    标签: java selenium xpath web-scraping pseudo-element


    【解决方案1】:

    的存在,例如::before 暗示该元素是:

    • 风格或
    • 在某些内容之前插入

    因此元素本质上是动态的,并且要识别您必须为所需的 visibilityOfElementLocated() 诱导 WebDriverWait 的元素,您可以使用以下任一 @987654323 @:

    • cssSelector:

      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']")));
      

    【讨论】:

      【解决方案2】:

      您是否试图从 findElements 的对象进行访问?这就是它理想的工作方式:

          List <WebElement> myList = driver.findElements(By.xpath("//*[@class=\"providers-list clearfix\"]"));
                      for(WebElement eachList:myList)
                      {
               System.out.println(eachList.findElement(By.xpath("div[1]")).getText());
                      }
      

      【讨论】:

        【解决方案3】:

        请使用这个 X-path - //*[contains (@class, ‘clearfix’)]

        【讨论】:

        • 谢谢,Abhishek 它仍然给我一个错误。实际上我需要从 class="data-container" 中的 div 中获取数据。
        猜你喜欢
        • 2016-06-19
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 2015-09-02
        • 2020-08-14
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        相关资源
        最近更新 更多