selenium+pytest 怎么判断元素是否在可视区域内,不需要滚动才能看见该元素

python+selenium自动化,需要判断元素目前在可视区域内,查找资料都是js代码,嵌进去又不好用
js1 = “target = document.getElementByXpath(‘html/div’); clientRect = target.getBoundingClientRect(); return clientRect.top;”
elementHeight = self.driver.execute_script(js1)
js2 = “return document.documentElement.clientWidth;”
pageHeight= self.driver.execute_script(js2)
if elementHeith < pageHeigth:
则代表可见

elementHeight和pageHeight都返回的none type

主要是看你找的这个元素的加载状态。我觉得如果你是指肉眼的可视范围。那可能最好还是截图。

因为滚动也是分情况的,比如滚动加载这种场景,那元素可以用是否能find到去做判断。

但是如果是页面元素已经全部加载出来了。滚动只起到动态的效果的话,那么用find 是不行的,是一定有的。只能用肉眼或者截图判断。

谢谢老师,最后用页面高度和元素高度判断是不是在可视区域了

js1 = "target = document.querySelector('.policy-details > div:nth-child(1) > div:nth-child(1) > p:nth-child(27) > a:nth-child(1) > span:nth-child(1)');  clientRect = target.getBoundingClientRect(); return clientRect.top;"
elementHeight = self.driver.execute_script(js1)
js2 = "return document.documentElement.clientWidth;"
pageHeight= self.driver.execute_script(js2)

:+1: