selenium学习

selenium模块和爬虫之间的关联

  • 便捷的获取网站中动态加载的数据
  • 便捷实现模拟登录

什么是selenium模块

基于浏览器自动化的一个模块

selenium使用流程:

复制代码
- 环境安装:pip install selenium
- 下载一个浏览器的驱动程序(谷歌浏览器)
    - 下载路径:http://chromedriver.storage.googleapis.com/index.html

资源绑定了Chrome116对应的chhromedriver.exe

selenium的操作代码:

  • 发起请求:get(url)
  • 标签定位:find_element(By.属性, value='') value是值
  • 标签交互:send_keys('xxx')
  • 执行js程序:excute_script('jsCode')
  • 前进、后退:back(), forward()
  • 关闭浏览器:quit()
python 复制代码
标签定位中By的属性有:
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
  • selenium处理iframe:
  • 如果定位的标签存在于iframe中,则表明是在标签页的一个子标签页中,必须使用switch_to.frame(id)
  • 动作链(拖动):from selenium.webdriver import ActionChains
    • 实例化一个动作链对象:action = ActionChains(bro)
    • click_and_hold(div):长按且点击操作
    • move_by_offset(x,y)
    • perform()让动作链立即执行
    • action.release()释放动作链对象

selenium的常用操作自动化

找到输入框

找到搜索按钮

python 复制代码
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


service = Service(executable_path='./chromedriver.exe')
browser = webdriver.Chrome(service=service)
browser.get('https://www.taobao.com/')

# 标签定位
search_input = browser.find_element(By.ID, value='q')  # 通过id为q找到搜索框
# 标签交互
search_input.send_keys('iphone')     #发送字符串

# 执行一组js程序
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
sleep(2)
# 点击搜索按钮
btn = browser.find_element(By.CSS_SELECTOR, '.btn-search')  #CSS_SELECTOR用法:   .classname:选择具有指定类名的元素。
btn.click()     # 点击按钮
sleep(5)

browser.get('https://www.baidu.com')
sleep(2)

# 回退
browser.back()
time.sleep(2)

# 前进
browser.forward()
sleep(2)

# 退出浏览器
browser.quit()

"""
By有的函数:
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
"""

04.动作链和iframe的处理.py

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

from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service(executable_path='./chromedriver.exe')
browser = webdriver.Chrome(service=service)
browser.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

# 如果定位的标签是存在于iframe标签之中的,则必须通过如下操作进行标签定位
browser.switch_to.frame('iframeResult')   # 切换浏览器标签定位的作用域 参数为iframe标签的id
div = browser.find_element(By.ID, 'draggable')

# 动作链
action = ActionChains(browser)
# 点击长按指定的标签
action.click_and_hold(div)
for i in range(5):
    # perform()立即执行动作链操作
    # move_by_offset(x, y): x:水平方向 y:垂直方向
    action.move_by_offset(18, 0).perform()
    sleep(.5)

# 释放动作链
action.release().perform()

sleep(5)
browser.quit()
相关推荐
你想知道什么?2 小时前
线性回归-学习笔记
笔记·学习·线性回归
鱼毓屿御2 小时前
从「只会聊」到「边想边做」的跃迁
前端·学习·react.js
AOwhisky3 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
minglie15 小时前
zynq中linux系统的自动登录和免密登录
学习
茯苓gao5 小时前
嵌入式开发笔记:Qt信号槽机制深度解析——从原理到实战的全方位指南
开发语言·笔记·嵌入式硬件·qt·学习
我想我不够好。6 小时前
监控学习 7.23 1.5hour
学习
ClouGence7 小时前
哪些场景适合做自动化测试?这 4 类最值得优先投入
selenium·测试
泰勒朗斯8 小时前
Helicopter FBI-405尾电机版本设置
学习
测试老哥9 小时前
接口自动化测试分层设计与实践总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
minglie19 小时前
香橙派zero3配个iic屏显示ip
linux·学习