selenium

selenium

简介

selenium:浏览器自动化的工具

链接: 文档

使用

1.Python环境中安装selenium

python 复制代码
pip install selenium

2.把驱动程序放在pycharm开发目录中

入门

python 复制代码
import time
from selenium import webdriver
# 取得谷歌浏览器驱动
driver = webdriver.Chrome()
# 打开网页
driver.get('https://www.jd.com/')
# 页面最大化
driver.maximize_window()
# 得到页面大小
print(driver.get_window_size())
# 得到网址
print(driver.current_url)
# 得到所有窗口句柄
print(driver.window_handles)
# 睡5秒,等待
time.sleep(5)
# close driver,resource recovery
driver.quit()

# driver.close() # 关闭页面

元素定位

  • 常用的有以下几种:
python 复制代码
driver.find_element(By.XPATH,'XPATH')
driver.find_element(By.CLASS_NAME,'CLASS_NAME')
driver.find_element(By.CSS_SELECTOR,'CSS_SELECTOR')
driver.find_element(By.ID,'ID')
driver.find_element(By.LINK_TEXT,'LINK_TEXT')
driver.find_element(By.PARTIAL_LINK_TEXT,'PARTIAL_LINK_TEXT')
driver.find_element(By.TAG_NAME,'TAG_NAME')
  • id定位
python 复制代码
driver.get('https://www.jd.com/')
eli = driver.find_element(By.ID,'key')
  • 超链接,根据文本进行定位,精确定位,文本不能缺错
python 复制代码
eli = driver.find_element(By.LINK_TEXT,'抢大牌好价')
eli.click()
  • 超链接,部分文本匹配,click()摸拟点击行为
python 复制代码
eli = driver.find_element(By.PARTIAL_LINK_TEXT,'牌好价').click()
  • Xpath定位
字符 说明
input 选择所有input标签,同理,可以选选div等其他标签
* 选择所有元素
/ 从当前开始选择
// 从当前及以下的任意节点选择
. 当前节点
... 父节点
@ 根据属性进行选择
[n] 返回结果的第n项

在京东搜索栏里找"奶粉"

python 复制代码
eli = driver.find_element(By.XPATH,'//*[@id="key"]').send_keys('奶粉')
eli = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button').click()

节点交互

  • 输入文字时用send_keys()方法
  • 清空文字时用clear()方法
  • 点击按钮时用click()方法。

等待

因网速等原因,网页未能全部加载而找不到相应元素,需要等待加载完毕,再找查找元素

  • 强制等待
python 复制代码
time.sleep(10)
  • 隐式等待
python 复制代码
driver.implicitly_wait(15)

执行js

模拟运行JavaScript,此时使用execute_script()方法即可实现。

python 复制代码
driver.execute_script('document.documentElement.scrollTo(0,2000)')

动作链

链接: 演示网址

python 复制代码
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 取得谷歌浏览器驱动
driver = webdriver.Chrome()
url = '<input clstag="h|keycount|h|keycount|head|search_c" type="text" autocomplete="off" id="key" accesskey="s" class="text" aria-label="搜索" style="background: transparent;">'
# 打开网页
driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
driver.implicitly_wait(15)
# eli = driver.find_element(By.ID,'key')
# eli = driver.find_element(By.PARTIAL_LINK_TEXT,'牌好价').click()
# eli = driver.find_element(By.LINK_TEXT,'牌好价')
# eli = driver.find_element(By.XPATH,'//*[@id="key"]').send_keys('奶粉')
# eli = driver.find_element(By.XPATH,'//*[@id="search"]/div/div[2]/button').click()
# 如果定位的标签在iframe标签中,需要以下语句,frame的参数可以是iframe标签的id属性
driver.switch_to.frame('iframeResult')
drag_block = driver.find_element(By.XPATH, '//*[@id="draggable"]')
# 创建动作链对象,绑定浏览器
my_action = ActionChains(driver)
# 点击并长按指定标签
my_action.click_and_hold(drag_block)
# 移动标签,perform()表示立即执行
for i in range(6):
    my_action.move_by_offset(25,25).perform()
    time.sleep(0.5)
# 睡5秒,等待
time.sleep(1)
# 释放动作链对象
my_action.release()
# close driver,resource recovery
# driver.quit()

# driver.close() # 关闭页面
相关推荐
weixin_408099677 分钟前
python请求文字识别ocr api
开发语言·人工智能·后端·python·ocr·api·ocr文字识别
我会好好吃饭歌8 分钟前
医疗单据隐私脱敏开源项目:OCR + Vision LLM + 四点定位打码,适配弯曲、旋转、复杂拍摄场景
图像处理·python·开源项目·paddleocr·医疗ai·隐私脱敏
惊鸿若梦一书生9 分钟前
《Python 高阶教程》003|变量背后不是盒子:名字、对象与引用的本质
java·jvm·python
qq_3806191620 分钟前
SQL中如何实现特定范围内数据的批量删除_范围分区与分区删除
jvm·数据库·python
Hommy8827 分钟前
【开源剪映小助手】云渲染环境搭建
python·开源·github·剪映小助手
qq_3806191632 分钟前
HTML函数开发需要独立显卡吗_HTML函数与显卡关系详解【说明】
jvm·数据库·python
无语......43 分钟前
安装uv并管理 Python / 包
开发语言·python·uv
测试老哥1 小时前
白盒测试用例的设计
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
2201_756847331 小时前
Golang如何处理JSON空值null_Golang JSON空值处理教程【精通】
jvm·数据库·python
YuanDaima20481 小时前
双指针基础原理与题目说明
数据结构·人工智能·python·算法·leetcode·手撕代码