当前位置: 首页 > news >正文

Python中Selenium 和 keyboard 库的使用

文章目录

  • 一、Selenium
    • 基本使用
    • 2.等待元素加载
    • 常用操作
  • keyboard
    • 基本使用
    • 与 Selenium 联合使用

一、Selenium

Selenium 是一个用于浏览器自动化的工具。它可以模拟用户与网页的交互,如点击按钮、填写表单、导航页面等。Selenium 支持多种编程语言,包括 Python、Java、C# 等。

基本使用

1.安装 Selenium 使用 pip 安装 Selenium:

pip install selenium

2.配置浏览器驱动
Selenium 需要一个浏览器驱动来控制浏览器,比如 ChromeDriver(用于控制 Google Chrome)或 GeckoDriver(用于控制 Mozilla Firefox)。首先需要下载相应的驱动程序,并将其添加到系统路径中。
基本操作
3.一个简单的例子,展示了如何使用 Selenium 控制 Chrome 浏览器打开一个网页并进行一些基本操作:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time# 配置 Chrome 选项
chrome_options = Options()
chrome_options.add_argument("--disable-blink-features=AutomationControlled")# 初始化 WebDriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver', options=chrome_options)# 打开网页
driver.get('https://www.baidu.com')# 查找元素并进行操作
search_box = driver.find_element(By.NAME, 'q')
search_box.send_keys('Selenium Python')
search_box.send_keys(Keys.RETURN)time.sleep(3)# 关闭浏览器
driver.quit()# 二、使用步骤
## 1.引入库
代码如下(示例):```c
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.等待元素加载

在自动化浏览器操作时,某些操作可能需要等待页面加载或元素出现。Selenium 提供了显式等待和隐式等待两种方式。
显式等待
显式等待是在代码中明确指定等待某个条件成立时再继续执行后续代码。常见的条件包括元素可见、元素可点击等。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC**显式等待**
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, 'element_id')))

隐式等待
隐式等待是设置一个全局等待时间,在找不到元素时,Selenium 会在这个时间范围内不断地重试,直到找到元素或超时。

driver.implicitly_wait(10)

常用操作

  • 查找元素
element = driver.find_element(By.ID, 'element_id')
elements = driver.find_elements(By.CLASS_NAME, 'element_class')
  • 点击元素
element.click()
  • 输入文本
element.send_keys('text to input')
  • 获取元素属性
attribute_value = element.get_attribute('attribute_name')
  • 切换窗口/标签
driver.switch_to.window(driver.window_handles[1])

keyboard

keyboard 是一个用于模拟键盘事件的 Python 库。它可以用来发送按键、监听按键事件等。

基本使用

1.安装 keyboard 使用 pip 安装 keyboard:

pip install keyboard

2.基本操作
发送按键

import keyboard# 发送单个按键
keyboard.press_and_release('shift + a')# 发送多个按键
keyboard.write('Hello, World!')
监听按键
python
复制
import keyboard# 定义按键事件处理函数
def on_key_event(event):print(f'Key {event.name} pressed at {event.time}')# 监听按键
keyboard.on_press(on_key_event)# 保持程序运行
keyboard.wait('esc')

与 Selenium 联合使用

在自动化测试中,有时可能需要模拟键盘事件,这时可以将 Selenium 与 keyboard 库结合使用。例如,在捕获某些异常情况时,可以使用 keyboard 库触发特定的按键事件。

import keyboard
from selenium import webdriver# 初始化 WebDriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver')# 打开网页
driver.get('https://www.baidu.com')# 等待某一时刻按下特定键
while True:if keyboard.is_pressed('p'):print('Key "p" pressed')break# 关闭浏览器
driver.quit()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Transformer-Bert---散装知识点---mlm,nsp
  • 你有多自律就有多自由
  • Perl语言入门学习指南
  • 跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py
  • Sql Server缓冲池、连接池等基本知识(附Demo)
  • Docker 基本管理
  • 【漏洞复现】泛微E-Cology WorkflowServiceXml SQL注入漏洞
  • 探索NVM:让Node.js开发如虎添翼的利器
  • 如何检查我的网站是否支持HTTPS
  • 爬虫学习2:爬虫爬取网页的信息与图片的方法
  • 京准:GPS北斗卫星授时信号安全隔离防护装置
  • 15Kg级无人机降落伞系统技术详解
  • 用Python爬虫能实现什么?
  • windows docker nvidia wsl2
  • SQL面试题练习 —— 统计最大连续登录天数区间
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • AngularJS指令开发(1)——参数详解
  • JAVA SE 6 GC调优笔记
  • Java 内存分配及垃圾回收机制初探
  • Java的Interrupt与线程中断
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Node项目之评分系统(二)- 数据库设计
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue:响应原理
  • vue总结
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 不上全站https的网站你们就等着被恶心死吧
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端性能优化--懒加载和预加载
  • 山寨一个 Promise
  • 项目实战-Api的解决方案
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 栈实现走出迷宫(C++)
  • Spring第一个helloWorld
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • # 职场生活之道:善于团结
  • #100天计划# 2013年9月29日
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (02)Hive SQL编译成MapReduce任务的过程
  • (06)金属布线——为半导体注入生命的连接
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (4)STL算法之比较
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (学习日记)2024.02.29:UCOSIII第二节
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .Net Core 生成管理员权限的应用程序
  • .net FrameWork简介,数组,枚举
  • .NET 回调、接口回调、 委托
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?