我需要在滚动网页之前检查该元素是不可见的。该元素实际上存在于网页上,但在屏幕上不可见。滚动网页后,该元素对用户可见。
如何自动执行上述方案?
答案 0 :(得分: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)
答案 1 :(得分:0)
我不建议您使用任何测试自动化工具自动执行这些类型的测试,因为此测试不可靠,并且由于以下主要原因而无法持续通过。
您如何确保在不同浏览器中看不到特定元素?
如何在不同的屏幕分辨率下运行相同的测试?
同样在不同尺寸的显示器上运行相同的测试?
答案 2 :(得分:0)
@haroonzone说的是什么。它无法可靠地完成。
也就是说,我会尝试使用WebElement上的getLocation()
和getSize()
方法。
与driver.manage().window().
getSize()
结合。
或许有些玩JavaScript window
。即window
,document
,document.body
或{{1}} DOM元素上的innerHeight
和innerWidth
。如果您不希望将滚动条计入视口,请使用clientWidth
和clientHeight
。
This link为IE提供了一些高级建议,因为IE的工作方式明显不同。
试一试,看看它是怎么回事。