【问题标题】:Selenium chrome driver scrape dynamically add attribute in elementSelenium chrome 驱动程序抓取在元素中动态添加属性
【发布时间】:2020-08-02 04:30:33
【问题描述】:

您好,我是 selenium chrome 驱动程序的新手。我正在抓取电子商务网站,我正在从主页抓取所有产品详细信息,但在该页面中,产品图像正在动态加载(产品加载后 5-7 秒后)。 源码是这样的

<img alt="product1" class="image" />

5-7 秒后

<img alt="product1" class="image" src="product image url" />

所以我想抓取该图像src 属性值。

我尝试了以下方式

    driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);

或

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

或

Thread.sleep(20000)

但我失败了 有人帮我了解如何获取图像src 属性值吗?

【问题讨论】:

  • 由于应用程序的行为不清楚,请与我们分享应用程序网址
  • @AkashChavda 用您的代码试验更新问题。

标签: java selenium selenium-chromedriver


【解决方案1】:

Selenium 的“FluentWait”是你的朋友

final WebElement imgWithSrc = new FluentWait<>(driver)
            .withTimeout(Duration.of(10_000, ChronoUnit.MILLIS))
            .pollingEvery(Duration.of(250, ChronoUnit.MILLIS))
            .ignoring(NoSuchElementException.class)
            .ignoring(StaleElementReferenceException.class)
            .ignoring(ScriptTimeoutException.class)
            .until(d -> {
                final WebElement imgElement = d.findElement(By.cssSelector("img.image"));
                if (StringUtils.isNotBlank(imgElement.getAttribute("src"))) {
                    return imgElement;
                }
                return null;
            });

在第二行中,您可以看到最大值。等待 10 秒,每 250 毫秒轮询一次(第三行)

【讨论】:

    【解决方案2】:

    试试这个:

    WebElement image = new FluentWait<WebDriver>(driver)
            .withTimeout(Duration.of(10, ChronoUnit.SECONDS))
            .until(
                    ExpectedConditions.presenceOfElementLocated(
                            By.xpath("//img[@alt='product1'][@src]")
                    )
            );
    

    上面的代码意味着服务员将轮询你的DOM 10 秒,除非你的DOM 得到xpath 中描述的元素。 xpath 的 [@src] 部分意味着我们查询具有 src 属性的元素,因此除非将必需的属性分配给元素,否则不会返回肯定的结果。

    【讨论】:

      猜你喜欢
      • 2020-05-15
      • 2015-11-13
      • 2018-08-15
      • 2014-09-20
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多