我需要检查在滚动网页之前元素是不可见的。该元素实际上存在于网页上,但在屏幕上不可见。一旦我滚动网页,元素就变得对用户可见。使用硒Webdriver如何检查webelement是否在屏幕的可见区域之外?
如何自动化上述场景?
我需要检查在滚动网页之前元素是不可见的。该元素实际上存在于网页上,但在屏幕上不可见。一旦我滚动网页,元素就变得对用户可见。使用硒Webdriver如何检查webelement是否在屏幕的可见区域之外?
如何自动化上述场景?
我不推荐你用任何测试自动化工具自动化这些类型的测试,因为这个测试不会是可靠的,并且由于以下主要原因不会一致传递。
如何确保特定元素在不同浏览器中不可见?
如何在不同的屏幕分辨率下运行相同的测试?
同样在不同尺寸的显示器上运行相同的测试?
@haroonzone说了些什么。它不能可靠地完成。
这就是说,我想试试用WebElement上的getLocation()
和getSize()
方法。
结合driver.manage().window().
getSize()
。
或者也许有些玩JavaScript。即window
,和innerWidth
,document
,或者可能是document.body
DOM元素。如果您不希望滚动条计入视口,请使用clientWidth
和clientHeight
。
This link为IE提供了一些高级建议,因为IE的工作方式明显不同。
试试吧,看看它是怎么回事。
我找到了一种方法来检查元素是否可见。
想法是获取页面的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)
这是一个python特定的代码。 self.browser引用webdriver实例。最后一行确保元素的y位置位于屏幕顶部(yOffset)和底部(yOffset + browser_height)之间, –