selenium之如何控制网页内嵌div中滚动条的滚动
原创
©著作权归作者所有:来自51CTO博客作者wx634e5f8a4276e的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、示例HTML代码如下:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
div.scroll
{
background-color:#00FFFF;
width:100px;
height:100px;
overflow:auto;
}
</style>
</head>
<body>
<p>overflow:scroll</p>
<div class="scroll">You can use the overflow property when you want to have better control of the layout. The default value is visible.aaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
</body>
</html>
我们用JS来控制里面的滚动条滚动:
# -*- coding: utf-8 -*-
"""
@author: lucas
@Function:
@file: divRoll.py
@time: 2021/8/24 10:29 上午
"""
import unittest
from time import sleep
from selenium import webdriver
class DivRoll(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
def test_div(self):
driver = self.driver
driver.get('file:///Users/leiyuxing/PycharmProjects/pythonProject4/htmlData/div.html')
sleep(1)
# 用JS来控制里面的滚动条滚动
# document.getElementsByClassName("scroll")[0].scrollHeight # 获取滚动条高度
# document.getElementsByClassName("scroll")[0].scrollWidth # 获取横向滚动条宽度
# document.getElementsByClassName("scroll")[0].scrollLeft = xxx # 控制横向滚动条位置
js = 'document.getElementsByClassName("scroll")[0].scrollTop=10000'
driver.execute_script(js)
sleep(3)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()
二、推荐三种兼容firefox、chrome、IE浏览器的js写法
$(window).scrollTop(300);
$(document).scrollTop(300)
$("html,body").scrollTop(300);
都是jQuery的写法,原生js怎么办:
document.body.scrollTop = 300; // FireFox IE9+ 不可以
document.documentElement.scrollTop = 300; // Chrome 不可以 document.documentElement === html
原理以及详细说明可以参考https://liyaoli.com/2015-08-17/about-scroll.html 这篇文章