selenium调用JS实现滚动条获取数据

selenium_调用JS

有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作

一般用到操作滚动条的会两个场景:

  1. 要操作的页面元素不在当前页面范围,无法进行操作,需要拖动滚动条
  2. 注册时的法律条文需要阅读,判断用户是否阅读的标准是:滚动条是否拉到最下方

1 调用js的方法

execute_script(script, *args)

2 滚动条回到顶部

js="document.getElementById('id').scrollTop=0"
driver.execute_script(js)

3 滚动条拉到底部

js="document.documentElement.scrollTop=10000"
driver.execute_script(js)

可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部

以上方法在Firefox和IE浏览器上上是可以的,但是用Chrome浏览器,发现不管用。Chrome浏览器解决办法:

js = "document.body.scrollTop=0"
driver.execute_script(js) 

可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部

以上方法在Firefox和IE浏览器上上是可以的,但是用Chrome浏览器,发现不管用。Chrome浏览器解决办法:

js = "document.body.scrollTop=0"
driver.execute_script(js) 

4 横向滚动条

js = "window.scrollTo(100,400)"
driver.execute_script(js)

5 代码

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()

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留不住的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值