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() # 关闭页面
相关推荐
wyiyiyi6 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
mit6.8246 小时前
[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络
人工智能·python
没有bug.的程序员6 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋7 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
AntBlack8 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
杜子不疼.9 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
myzzb10 小时前
基于uiautomation的自动化流程RPA开源开发演示
运维·python·学习·算法·自动化·rpa
TLuoQiu11 小时前
小电视视频内容获取GUI工具
爬虫·python
我叫黑大帅11 小时前
【CustomTkinter】 python可以写前端?😆
后端·python
胡耀超11 小时前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
python·深度学习·ffmpeg·音视频·语音识别·多模态·asr