Selenium实战指南:安装、使用技巧和JavaScript注入案例解析

背景

​ 最近一段时间我会重新开一个关于selenium的专题,由浅入深的给大家讲一下selenium,同时回顾一下之前学的内容,selenium可以实现模拟登录,动态数据获取,获取动态cookie等等,还有可以写一些抢p的脚本,点到为止,步入正题。

简介

  • selenium

​ - 是一种浏览器自动化的工具,所谓的自动化是指,我们可以通过代码的形式制定一系列的行为动作,然后执行代码,这些动作就会同步触发在浏览器中,即浏览器模拟人的执行。

环境安装:

py 复制代码
pip install  selenium
conda install selenium

如果大家chrome浏览器版本太高,又不好降级,建议大家看一下这篇博客:【笔记】chromedriver下载与安装方法_谷歌浏览器驱动_逸峰轻云的博客-CSDN博客

常用函数:

请求发送:

复制代码
driver.get("网站")  驱动打开一个网站
driver.quit()# 关闭浏览器
驱动创建:
  • Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等.另外,也支持无界面浏览器。主要使用Chrome浏览器.
py 复制代码
driver = webdriver.Chrome(r'路径')  实例化一个浏览器对象
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
定位元素:
  • webdriver 提供了一系列的元素定位方法,常用的有以下几种:

复制代码
  driver.find_element_by_xpath() # 根据xpath对网页进行解析
  find_elements_by_link_text() # 根据超链接内容进行定位
  find_element_by_id(  ) # 根据标签id属性值定位
  find_element_by_tag_name() # 根据标签名定位
  find_element_by_name() # 根据其name属性值定位

​ 元素定位用的最多的是xpath那个,大家可以去学一下xpath的语法。

页面交互:

​ Selenium可以驱动浏览器来执行一些操作,也就是说可以让浏览器模拟执行一些动作。

复制代码
send_keys()#发送关键字
clear() # 清空文字
click() # 点击按钮
执行js:

​ 对于某些操作,Selenium API并没有提供。比如,下拉进度条,它可以直接模拟运行JavaScript,此时使用execute_script()方法即可实现。

复制代码
execute_script() #执行js
py 复制代码
# 拉到顶部
def scroll_top():
js = "var q=document.documentElement.scrollTop=0"
return d.execute_script(js)
py 复制代码
#拉到底部
window.scrollTo (0, document.body.scrollHeight)

案例实战:

效果展示1:
py 复制代码
from selenium import webdriver
from time import sleep

# 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
# 路径写你下载的驱动的位置(建议使用相对路径)
driver = webdriver.Chrome(r'./chromedriver')
# 用get打开百度页面
driver.get("http://www.baidu.com")
# 等待三秒 观察效果
sleep(3)
# 关闭浏览器
driver.quit()
效果展示2:

​ 要求:实现输入python自动跳转到之后的页面

py 复制代码
from selenium import webdriver
from time import sleep

# 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
driver = webdriver.Chrome(r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe')
# 用get打开百度页面
driver.get("http://www.baidu.com")
# 找到输入框
shuru=driver.find_element_by_id('kw')
shuru.send_keys("python")
# 输入关键字

sleep(3)
# # 找到确定按钮
button=driver.find_element_by_xpath('//*[@id="su"]')
button.click()

# sleep(3)

# # 关闭浏览器
# driver.quit()
效果展示3:

要求:对京东网站输入购买物品关键字后,同时注入js脚本滑倒最底部。

​ 要滑动网页到最低侧,你可以使用 JavaScript 中的 scrollTo 方法。以下是一个示例代码,可以在网页加载完成后自动滑动到最低侧:

js 复制代码
window.onload = function() {
  // 获取文档的高度
  var docHeight = document.documentElement.scrollHeight;
  
  // 滑动到最低侧
  window.scrollTo(0, docHeight);
    
};
js 复制代码
// 滑动到最顶部
window.scrollTo(0, 0);
py 复制代码
path = r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe'

from selenium import webdriver
from time import sleep

# 创建一个浏览器对象,executable_path指定当前浏览器的驱动程序
bro = webdriver.Chrome(executable_path=path)

# 浏览器的请求发送
bro.get('https://www.jd.com/')

# 标签定位: 调用find系列的函数进行标签定位
search_box = bro.find_element_by_xpath('//*[@id="key"]')

# 节点交互
search_box.send_keys('Apple14')  # 向指定标签中录入内容
sleep(2)

btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button/i')
btn.click()  # 点击按钮
sleep(2)

# 使用execute_script方法注入JavaScript代码,滑动到最底部
bro.execute_script('window.scrollTo(0, document.documentElement.scrollHeight)')
sleep(5)

# 关闭浏览器
bro.quit()
扩展:

扩展实现控制滑动的速度:

py 复制代码
path = r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe'

from selenium import webdriver
from time import sleep

# 创建一个浏览器对象,executable_path指定当前浏览器的驱动程序
bro = webdriver.Chrome(executable_path=path)

# 浏览器的请求发送
bro.get('https://www.jd.com/')

# 标签定位: 调用find系列的函数进行标签定位
search_box = bro.find_element_by_xpath('//*[@id="key"]')

# 节点交互
search_box.send_keys('Apple14')  # 向指定标签中录入内容
sleep(2)

btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button/i')
btn.click()  # 点击按钮
sleep(2)

# 获取页面高度
page_height = bro.execute_script('return document.documentElement.scrollHeight')

# 设置每次滑动的距离和间隔时间
scroll_distance = 200  # 每次滑动的距离
scroll_interval = 0.1  # 每次滑动的间隔时间(秒)

# 逐步滑动页面
current_height = 0  # 当前滑动的高度
while current_height < page_height:
    bro.execute_script(f'window.scrollBy(0, {scroll_distance});')  # 滑动指定距离
    sleep(scroll_interval)  # 等待一段时间
    current_height += scroll_distance  # 更新当前滑动的高度

# 关闭浏览器
bro.quit()

建议大家将这段代码保存下来,实现慢慢滑动

py 复制代码
# 获取页面高度
page_height = bro.execute_script('return document.documentElement.scrollHeight')

# 设置每次滑动的距离和间隔时间
scroll_distance = 200  # 每次滑动的距离
scroll_interval = 0.1  # 每次滑动的间隔时间(秒)

# 逐步滑动页面
current_height = 0  # 当前滑动的高度
while current_height < page_height:
    bro.execute_script(f'window.scrollBy(0, {scroll_distance});')  # 滑动指定距离
    sleep(scroll_interval)  # 等待一段时间
    current_height += scroll_distance  # 更新当前滑动的高度

今天的分享就到这里啦!!!

相关推荐
CC码码15 分钟前
不修改DOM的高亮黑科技,你可能还不知道
前端·javascript·面试
虚诚18 分钟前
vue2中树形表格怎么实现
前端·javascript·vue.js·ecmascript·vue2·树形结构
毕设源码-郭学长29 分钟前
【开题答辩全过程】以 基于python电商商城系统为例,包含答辩的问题和答案
开发语言·python
black0moonlight29 分钟前
win11 isaacsim 5.1.0 和lab配置
python
知乎的哥廷根数学学派33 分钟前
基于多尺度注意力机制融合连续小波变换与原型网络的滚动轴承小样本故障诊断方法(Pytorch)
网络·人工智能·pytorch·python·深度学习·算法·机器学习
网安CILLE35 分钟前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
jjjddfvv36 分钟前
超级简单启动llamafactory!
windows·python·深度学习·神经网络·微调·audiolm·llamafactory
A先生的AI之旅38 分钟前
2025顶会TimeDRT快速解读
人工智能·pytorch·python·深度学习·机器学习
程序员小远1 小时前
完整的项目测试方案流程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例