3

我需要在滚动网页之前检查该元素是否不可见。该元素实际上存在于网页上,但在屏幕上不可见。滚动网页后,该元素对用户可见。

如何自动化上述场景?

4

3 回答 3

3

我找到了一种检查元素是否可见的方法。

思路是获取页面的1.滚动位置;2. 浏览器可见区域的高度,以及 3. 元素的 y 位置。

    scroll_position_script = """
        var pageY;
        if (typeof(window.pageYOffset) == 'number') {
            pageY = window.pageYOffset;
        } else {
            pageY = document.documentElement.scrollTop;
        }
        return pageY;
    """

    yOffset = self.browser.execute_script(scroll_position_script)

    js_client_height = "return document.documentElement.clientHeight;"
    browser_height = self.browser.execute_script(js_client_height)

    elem_yloc = int(element.location['y'])
    self.assertTrue(elem_yloc>=yOffset and elem_yloc<=yOffset+browser_height)
于 2013-02-11T12:54:09.650 回答
0

我不建议您使用任何测试自动化工具来自动化这些类型的测试,因为该测试不可靠并且由于以下主要原因而无法始终如一地通过。

  1. 您将如何确保特定元素在不同的浏览器中不可见?

  2. 在不同的屏幕分辨率上运行相同的测试怎么样?

  3. 同样在不同尺寸的显示器上运行相同的测试?

于 2012-05-02T22:52:12.507 回答
0

@haroonzone 说了什么。它不能可靠地完成。

也就是说,我会在 WebElement 上尝试一下getLocation()和方法。getSize()

driver.manage().window().getSize().

或者也许玩一些 JavaScript window。即innerHeightand innerWidthon window, document, 或者可能是document.bodyDOM 元素。如果您不想将滚动条计入视口,请使用clientWidthand clientHeight

此链接为 IE 提供了一些高级建议,因为 IE 的工作方式显然不同。

试一试,看看效果如何。

于 2012-05-03T09:01:36.013 回答