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

学习Python中Selenium模块的基本用法(5:程序基本步骤)

  使用Selenium操作浏览器,其内部即通过WebDriver向浏览器发送操作命令,根据Selenium官网帮助文档中的介绍,Selenium脚本一般分为8个步骤(如下图所示):
1)使用驱动实例开启会话:调用浏览器对应的WebDriver启动新的浏览器实例;
2)在浏览器上执行操作:在新的浏览器实例中跳转到某一网址;
3)请求浏览器信息:通过浏览器驱动获取浏览器基本信息,如浏览器设置、当前页面名称、当前页面网址等;
4)建立等待策略:由于网络原因或其它原因导致页面加载慢,需要设置等待时间以便浏览器能完成页面内容加载,可以使用Selenium内置的隐式等待或显式等待,也可以调用第三方库(如time)设置等待时间;
5)发送命令查找元素:按元素id、class名称、xpath等方式查找页面中的元素;
6)操作元素:对于步骤5中的找到的元素,可以执行输入文本、点击按钮、发送键盘按键等操作;
7) 获取元素信息:对于步骤5中的找到的元素,查看元素相关信息,如元素内容、显示状态、启用状态、选中状态等;
8)结束会话:功能测试完成后关闭浏览器实例。

=400x300
  上述步骤可以按需裁减,如不需要浏览器信息、元素信息等,根据帮助文档的示例编写了打开CSDN网站搜索selenium的简单程序,程序代码及运行效果如下图所示(CSDN主页的搜索框使用Selenium发送回车键或自动点击搜索按钮会弹出登录提示框,人工操作不会出现提示框,暂时不清楚怎么处理):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 使用驱动实例开启会话
driver = webdriver.Chrome()# 在浏览器上执行操作
driver.get("https://www.csdn.net/")
# 请求浏览器信息
print('页面标题:'+driver.title)
# 建立等待策略
time.sleep(5)# 发送命令查找元素
search_box = driver.find_element(By.ID, "toolbar-search-input") 
# 操作元素
search_box.send_keys("selenium")# 发送命令查找元素
search_button = driver.find_element(By.ID, "toolbar-search-button")
# 获取元素信息
print('按钮名称:'+search_button.text)# 操作元素
search_button.click()time.sleep(10)
# 结束会话
driver.quit()

在这里插入图片描述
在这里插入图片描述

  
  
  
  
  
  
  

参考文献:
[1]https://www.selenium.dev/zh-cn/
[2]https://www.selenium.dev/zh-cn/documentation/webdriver/getting_started/
[3]https://blog.csdn.net/kk_lzvvkpj/article/details/148610502
[4]https://registry.npmmirror.com/binary.html?path=chromedriver/
[5]https://chromedriver.chromium.org/

http://www.xdnf.cn/news/1320067.html

相关文章:

  • Linux817 shell:until,nfs,random
  • 力扣438:找到字符串中所有的字母异位词
  • Django前后端交互实现用户登录功能
  • [python学习记录2]变量
  • 脉冲计数实现
  • Docker之自定义jkd镜像上传阿里云
  • 排列组合+数量+资料
  • 25. 能否创建一个包含可变对象的不可变对象
  • 编程算法实例-Armstrong数(阿姆斯特朗数)
  • IDE/去读懂STM32CubeMX 时钟配置图(有源/无源晶振、旁路/晶振模式、倍频/分频)
  • 负载测试与压力测试详解
  • Rust Async 异步编程(五):执行器和系统 I/O
  • Spring 创建 Bean 的 8 种主要方式
  • MXFP4量化:如何在80GB GPU上运行1200亿参数的GPT-OSS模型
  • 【SpringBoot】Swagger 接口工具
  • 如何在Windows系统中更改用户名(中文转英文全流程)
  • 云原生俱乐部-RH134知识点总结(2)
  • MySQL数据库备份与恢复
  • neo4j导入导出方法
  • 25年第十本【金钱心理学】
  • 半敏捷卫星观测调度系统的设计与实现
  • 《WINDOWS 环境下32位汇编语言程序设计》第3章 使用MASM
  • Effective C++ 条款46:需要类型转换时请为模板定义非成员函数
  • Critic-V: VLM Critics Help Catch VLM Errors in Multimodal Reasoning(CVPR 2025)
  • 飞算AI 3.2.0实战评测:10分钟搭建企业级RBAC权限系统
  • 【牛客刷题】求四个数的最小公约数:两种高效解法详解(枚举法和最大公约数法)
  • 华为云之Linux系统安装部署Tomcat服务器
  • 【技术博客】480p 老番 → 8K 壁纸:APISR × SUPIR × CCSR「多重高清放大」完全指南
  • YoloV9改进策略:Block改进-DCAFE,并行双坐标注意力机制,增强长程依赖与抗噪性-即插即用
  • 【Golang】:函数和包