Web界面自动化操作工具 - Selenium常见用法
Selenium是一个用于自动化浏览器操作的工具,常用于Web应用程序的测试和爬虫开发。
下面是一些Python Selenium的常见用法和代码示例:
1. 导入Selenium库和WebDriver:
from selenium import webdriver
2. 创建WebDriver实例:
# 使用Chrome浏览器
driver = webdriver.Chrome()# 使用Firefox浏览器
driver = webdriver.Firefox()# 使用Edge浏览器
driver = webdriver.Edge()# 使用Safari浏览器
driver = webdriver.Safari()
3. 打开URL并获取页面内容:
# 打开URL
driver.get("https://www.example.com")# 获取页面标题
title = driver.title
print("页面标题:", title)# 获取页面源代码
page_source = driver.page_source
print("页面源代码:", page_source)
4. 查找元素并进行操作:
# 通过ID查找元素并输入文本
element = driver.find_element_by_id("username")
element.send_keys("myusername")# 通过XPath查找元素并点击
element = driver.find_element_by_xpath("//button[@class='submit']")
element.click()# 通过CSS选择器查找元素并获取文本
element = driver.find_element_by_css_selector(".message")
text = element.text
print("元素文本:", text)
其他多种Selenuim定位元素的方法:
4.1. 通过名称定位:
element = driver.find_element_by_name("element_name")
4.2. 通过类名定位:
element = driver.find_element_by_class_name("element_class")
4.3 通过标签名定位:
element = driver.find_element_by_tag_name("element_tag")
4.4 通过链接文本定位:
element = driver.find_element_by_link_text("link_text")
4.5. 通过部分链接文本定位:
element = driver.find_element_by_partial_link_text("partial_link_text")
5. 处理弹窗和框架:
# 切换到弹窗
alert = driver.switch_to.alert
alert.accept() # 接受弹窗# 切换到框架
frame = driver.switch_to.frame("frame_name")
# 在框架中执行其他操作
driver.switch_to.default_content() # 切回默认框架
6. 执行JavaScript代码:
# 执行JavaScript脚本
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # 滚动到页面底部
7. 等待页面加载和元素可见:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By# 等待页面加载完成
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "username")))# 等待元素可见并点击
element = wait.until(EC.visibility_of_element_located((By.XPATH, "//button[@class='submit']")))
element.click()
8. 关闭浏览器:
# 关闭当前窗口
driver.close()# 关闭整个浏览器
driver.quit()
这些是Python Selenium的一些常见用法和代码示例。Selenium提供了丰富的API用于模拟用户操作和获取页面内容,可以根据具体的需求进行更多的操作和定制化开发。
9.使用场景1 - 打开百度并搜索
from selenium import webdriver
from selenium.webdriver.common.by import By# 启动Chrome浏览器
driver = webdriver.Chrome()# 打开百度网页
driver.get("http://www.baidu.com")# 找到搜索输入框并输入关键词
search_input = driver.find_element(By.ID, "kw")
search_input.send_keys("selenium")# 提交搜索表单
search_input.submit()# 等待搜索结果加载完成
driver.implicitly_wait(20)# 找到搜索结果列表中的第一个结果
first_result = driver.find_element(By.CSS_SELECTOR, "#content_left .result h3 a")# 获取第一个结果的文本内容
first_result_text = first_result.text# 打印第一个搜索结果
print(first_result_text)# 关闭浏览器
driver.quit()
10.使用场景2 - 持续集成Jenkins触发
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 启动Chrome浏览器
driver = webdriver.Chrome()# 打开Jenkins登录页面
driver.get("http://Jenkins_Loginpage/")driver.implicitly_wait(10)# 找到用户名和密码输入框,并输入相应的值
username_input = driver.find_element(By.ID, "j_username")
password_input = driver.find_element(By.NAME, "j_password")username_input.send_keys("username")
password_input.send_keys("password")# 提交登录表单
login_button = driver.find_element(By.NAME, "Submit")
login_button.click()# 等待登录成功后的页面加载完成
driver.implicitly_wait(5)# 打开Jenkins首页
driver.get("http://Jenkins_Homepage/")# 找到搜索输入框,并输入任务名称
search_input = driver.find_element(By.ID, "search-box")
search_input.send_keys("Job_Name")# 提交搜索表单
search_input.submit()# 等待搜索结果加载完成
driver.implicitly_wait(5)# 找到搜索结果中的任务链接,并点击进入任务详情页
job_link = driver.find_element(By.LINK_TEXT, "Job_Name")
job_link.click()# 找到构建按钮,并点击进行构建
build_button = driver.find_element(By.XPATH, "//*[@id='tasks']/div[4]/span")build_button.click()# 等待构建成功的状态出现
wait = WebDriverWait(driver, 60)
build_success_status = wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, ".build-status"), "Success"))# 获取构建状态文本内容
build_status = driver.find_element(By.CSS_SELECTOR, ".build-status").text# 打印构建状态
print(build_status)# 关闭浏览器
driver.quit()
相关文章:
Web界面自动化操作工具 - Selenium常见用法
Selenium是一个用于自动化浏览器操作的工具,常用于Web应用程序的测试和爬虫开发。 下面是一些Python Selenium的常见用法和代码示例: 1. 导入Selenium库和WebDriver: from selenium import webdriver2. 创建WebDriver实例: # …...
Openssl数据安全传输平台009:加密理论基础:哈希/非对称加密RSA/对称加密AES
文章目录 0. 代码仓库代码编译时候可能出现的错误 1. 哈希1.1 哈希算法的种类:1.2 使用的头文件1.3 哈希算法API1.3.1 详解md5 API1.3.2 sha1/sha224/sha256/sha384/sha512常用API 1.5 sha1代码测试1.4 在VS中添加预处理器定义1.5 哈希算法C代码封装的思路 2. 非对称加密RSA2.1…...
iPhone开发--Xcode15下载iOS 17.0.1 Simulator Runtime失败解决方案
爆句粗口,升级后公司网络下载iOS 17.0.1 Simulator Runtime一直出错,每次出错后都得重新开始下载,oh,f**k。上一次在在家里的网络升级成功。 解决办法一: 进入网址:https://developer.apple.com/download…...
Galaxy生信云平台|Maftools高效地汇总、分析、注释和可视化肿瘤基因突变MAF文件...
2023-10-25,Galaxy中国镜像站 UseGalaxy.cn 平台新增 5 个工具。 MAF Tools Maftools-突变景观图: 绘制肿瘤基因突变景观图Maftools-突变汇总: 汇总MAF文件中的突变信息Maftools-共突变与互斥突变: 计算共突变和互斥突变Maftools-队列比较:比较两个队列之…...
JS三种常见的存储机制
1.localStorage localStorage是HTML5引入的一种持久化存储机制,用于在浏览器中长期保存数据。localStorage中存储的数据没有过期时间,除非被显式清除或代码删除。存储在localStorage中的数据对于同一个域名下的所有页面都是共享的。localStorage可以存储…...
【Python机器学习】零基础掌握BaggingClassifier集成学习
何提高分类模型的稳定性和准确性? 在金融风控、医疗诊断或者社交媒体推荐等场景中,分类问题是常见的难题。但是,单一的分类模型(如SVM)在处理复杂或不均衡的数据集时可能会表现不佳。那么,有没有一种方法能够提高模型的稳定性和准确性呢? 假设一家银行想要通过机器学习…...
[晕事]今天做了件晕事26;gcc对strcmp/strncmp的优化
今天做了一件晕事,写了一个测试小程序,开头的程序例如下面片段。在后续又写了一些代码,进行编译,使用gdb查看可执行文件,怎么都得不到想要的结果,非常的纳闷,非常的奇怪。 int main() {char a[3]="ab";int b = strncmp(0, a, 1<...
【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类
深度学习模型类 简介按滑动时间窗口切割数据集模型类CNNGRULSTMMLPRNNTCNTransformer 简介 本文所定义模型类的输入数据的形状shape统一为 [batch_size, time_step,n_features],batch_size为批次大小,time_step为时间步长,n_feat…...
ts | js | 爬虫小公举分享
Curl转Code 快速将curl转为各种语言的代码; 便于提取请求头之类, 或者微改直接使用 https://curlconverter.com/node-axios/ (有点慢, 但是很全)https://www.lddgo.net/convert/curl-to-code (没有axios, 我喜欢用axios) 使用… 抓取地址, 使用浏览器或者其他抓包工具都可, 这…...
实现el-table打印功能,样式对齐,去除滚动条
实现el-table打印功能,样式对齐,去除滚动条 // 整个页面打印 function printTable(id) {// let domId #js_index// if (id) {// domId #${ id };// }// let wpt document.querySelector(domId);// let newContent wpt.innerHTML;// let oldContent document.…...
2022年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 表达式len(“学史明理增信 ,读史终生受益”) > len(" reading history will benefit you ")的…...
【面试经典150 | 链表】两数相加
文章目录 写在前面Tag题目来源题目解读解题思路方法一:模拟 其他语言python3 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到…...
vue路径中“@/“代表什么
举例: <img src"/../static/imgNew/adv/tupian.jpg"/>其中,/是webpack设置的路径别名,代表什么路径,要看webpack的build文件夹下webpack.base.conf.js里面对于是如何配置: 上图中代表src,上述代码就…...
java springboot2.7 写一个本地 pdf 预览的接口
依赖方面 创建的是 接口web项目就好了 然后包管理工具打开需要这些 import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; imp…...
RustDay06------Exercise[81-90]
81.宏函数里面的不同的匹配规则需要使用分号隔开 // macros4.rs // // Execute rustlings hint macros4 or use the hint watch subcommand for a // hint.// I AM NOT DONE#[rustfmt::skip] macro_rules! my_macro {() > {println!("Check out my macro!");};($…...
【Docker从入门到入土 6】Consul详解+Docker https安全认证(附证书申请方式)
Part 6 一、服务注册与发现的概念1.1 cmp问题1.2 服务注册与发现 二、Consul ----- 服务自动发现和注册2.1 简介2.2 为什么要用consul?2.3 consul的架构2.3 Consul-template 三、consul架构部署3.1 Consul服务器Step1 建立 Consul 服务Step2 查看集群信息Step3 通过…...
PCIe架构的处理器系统介绍
不同的处理器系统中,PCIe体系结构的实现方式不尽相同。PCIe体系结构以Intel的x86处理器为蓝本实现,已被深深地烙下x86处理器的印记。在PCIe总线规范中,有许多内容是x86处理器独有的,也仅在x86处理器的Chipset中存在。在PCIe总线规…...
国产内存强势崛起,光威龙武挑战D5内存24×2新标杆
今年国产内存的表现非常亮眼,出现了很多高质量的普惠产品,像是最近光威推出的一款内存条龙武ddr5 242就很有竞争力,加上之前神策新加入的ddr5 242版本,都是备受瞩目的新品,凭实力把DIY主机的内存配置拉高到了48GB。 龙…...
矩阵的运算
目标:实现一个能进行稀疏矩阵基本运算(包括加、减、乘)的运算器。 (1)以三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减、相乘的运算 (2)稀疏矩阵的输入形式为三元组表示,运算结果则以通常…...
Android 获取SIM卡号码权限申请
1.添加权限 在AndroidManifest.xml中添加如下权限 <uses-permission android:name"android.permission.READ_PHONE_STATE"/> 2.获取权限 如果你只在清单文件中添加权限却没有在代码中获取权限,代码还是会报错的。 报错原因: android…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
