【问题标题】:Web Element "Grows" After Being Scrolled into ViewWeb 元素在滚动到视图后“增长”
【发布时间】:2020-12-29 15:24:26
【问题描述】:

我最近在 SO 上 posted a question 观察到,在调用 element.getSize().getWidth() 和 @ 时,Chrome Inspector 工具与 Selenium WebDriver 返回了不同的元素高度和宽度987654324@。使用 Chrome Inspector 我可以得到 w = 979h = 1961 的尺寸。使用Selenium,我分别得到979 and 1461 的尺寸。

我用来检索元素的代码:

String URL = "https://www.amazon.com/dp/B07G9RZD14";
driver.navigate().to(URL);

String XPath = ".//*[@id='aplus']/div";
WebElement element = driver.findElement(By.xpath(XPath));

我已经多次重复这个实验,每次都得到相同的结果。 Some have suggested 我正在更改浏览器的大小,但事实并非如此。我总是从头到尾以最大化模式进行测试。

我做了进一步的实验,结果发现,如果我在页面加载后立即使用 Chrome Inspector 检查元素(不向下滚动到元素使其显示在视图中),则返回的尺寸与Selenium (1461) 返回的尺寸。只有在我将元素滚动到视图中之后,元素高度才会“增长”到 1961 年。

当我检查上述 URL 中的 HTML 时,我看到一个执行“扩展器”功能的脚本。

我有三个问题。

1) 这个功能是如何工作的? (看起来它正在使用Javascript

2) 是否可以在不滚动元素的情况下获得所述元素(1961)的真实尺寸?或者需要滚动到带有这种功能的视图元素?

3) 如果需要将这些元素滚动到视图中,我们是否可以知道哪些元素具有此功能并且需要滚动到视图中,或者我必须滚动所有元素以防万一?

谢谢

【问题讨论】:

    标签: javascript html selenium selenium-webdriver webdriver


    【解决方案1】:

    亚马逊产品页面相当复杂,包含大量延迟加载的图片和其他元素。您的元素的大小可能正在增长,因为当您向下滚动页面时,新内容会延迟呈现。

    要回答您的问题,如果您想要完全准确的尺寸,您当然需要向下滚动整个页面并让所有元素完成渲染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2020-04-22
      • 1970-01-01
      • 2016-11-01
      • 2020-05-29
      • 2015-09-03
      • 1970-01-01
      相关资源
      最近更新 更多