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  # 更新当前滑动的高度

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

相关推荐
魔道不误砍柴功7 分钟前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch32 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
安冬的码畜日常1 小时前
【玩转 Postman 接口测试与开发2_006】第六章:Postman 测试脚本的创建(中):脚本的位置与执行顺序、AI助手及私有模块的使用
测试工具·postman·测试脚本·postbot·package library
cs_dn_Jie2 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
开心工作室_kaic2 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿3 小时前
webWorker基本用法
前端·javascript·vue.js
萧鼎3 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸3 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农3 小时前
Python 继承、多态、封装、抽象
开发语言·python