Python全系列 教程
3567个小节阅读:5931k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作
一般用到操作滚动条的会两个场景:
xxxxxxxxxx
execute_script(script, *args)
xxxxxxxxxx
js="document.getElementById('id').scrollTop=0"
driver.execute_script(js)
xxxxxxxxxx
js="document.documentElement.scrollTop=10000"
driver.execute_script(js)
可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部
以上方法在Firefox和IE浏览器上上是可以的,但是用Chrome浏览器,发现不管用。Chrome浏览器解决办法:
xxxxxxxxxx
js = "document.body.scrollTop=0"
driver.execute_script(js)
xxxxxxxxxx
js = "window.scrollTo(100,400)"
driver.execute_script(js)
xxxxxxxxxx
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from time import sleep
from lxml import etree
def test_scroll():
# 创建驱动
s = Service('./chromedriver.exe')
# 创建浏览器
driver = webdriver.Chrome(service=s)
# 访问页面
driver.get("https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&suggest=1.def.0.SAK7|MIXTAG_SAK7R,SAK7_M_AM_L5385,SAK7_M_COL_R,SAK7_S_AM_R,SAK7_SC_PD_R,SAK7_SM_PB_R,SAK7_SS_PM_R,tsabtest_base64_U2VhcmNobGlzdF80MzkyfGJhc2U_tsabtest|&wq=shouji&pvid=24340a2def0e4e0cb510af07aa32c89d")
# 拉动滚动条到底部
js= 'document.documentElement.scrollTop=100000'
driver.execute_script(js)
sleep(1)
# 创建一个etree对象,用于解析数据
e = etree.HTML(driver.page_source)
# 获取数据价格
prices = e.xpath('//ul[@class="gl-warp clearfix"]/li/div/div/strong/i/text()')
print(prices)
print(len(prices))
# 关闭浏览器
sleep(3)
driver.quit()
if __name__ =='__main__':
test_scroll()
实时效果反馈
1. 关于selenium, 使用JS说法错误的是?
A selenium通过execute_script()
执行JS代码
B selenium可以处理滚动条上下滚动
C selenium可以处理滚动条左右滚动
D selenium执行js需要开启js选项
答案
1=>D