selenium基础知识-python

一、下载selenium

pip install selenium==4.1.1   --ignore-installed

二、导包

from selenium import webdriver
#用于支持下拉列表
from selenium.webdriver.support.select import Select
from time import sleep

三、浏览器

用于打开浏览器操作,首先需要把浏览器驱动放置到python目录中。

#谷歌
driver=webdriver.Chrome()
#ie
driver=webdriver.Ie()
#火狐
driver=webdriver.Firefox()

四、打开和关闭浏览器

4.1打开浏览器

通过网址打开

driver.get("url");

4.2 关闭浏览器

close是仅关闭浏览器,quit是关闭浏览器同时关闭驱动

driver.quit();
driver.close();

五、等待

等待分为隐式等待和显式等待

#显式等待
sleep(3);
#隐式等待
driver.implicitly_wait(30)

六、定位页面元素

6.1 单一元素

可以采用name、id、xpath、link_text(链接文字)、class_name、tag_name

driver.find_element_by_class_name();
driver.find_element_by_css_selector();
driver.find_element_by_xpath();
driver.find_element_by_id();
driver.find_element_by_name();
driver.find_element_by_link_text()

6.2 多元素

采用elements

driver.find_elements_by_name()

6.3 select

用于识别下拉列表元素,需要导入包from selenium.webdriver.support.select import Select

才能使用

#找到下拉列表
driver.Select(driver.find_element_by_id())
Select(driver.find_element_by_id()).select_by_value("值");
Select(driver.find_element_by_id()).select_by_index("下拉框选项序号")
#取消相应的文本选项
Select(driver.find_element_by_id()).select_by_visible_text();
#取消所有选项
Select(driver.find_element_by_id()).deselect_all()
#取消所有选项
Select(driver.find_element_by_id()).deselect_all()
#取消对应的文本选项
Select(driver.find_element_by_id()).deselect_by_index()
#返回第一个选项
Select(driver.find_element_by_id()).first_selected_option()
#返回所有选项
Select(driver.find_element_by_id()).all_selected_options();

七、获取页面元素属性

获取网页标题可使用 title

获取页面元素的文本值text

获取指定属性的值attribute

send_keys可用于键盘输入数据

click用于点击页面元素

#获取页面标题
driver.title();
#获取元素文本
driver.find_element_by_id("kw").text();
#输入
driver.find_element_by_id("kw").send_keys("输入内容");
#点击
driver.find_element_by_id("su").click();

八、切换框架/窗口

切换框架和窗口需使用switch_to

#切换alert弹窗
driver.switch_to.alert();
#定位到当前聚集的元素上
driver.switch_to.active_element();
#切换到主页面
driver.switch_to.default_content();
#切换到某个frame
driver.switch_to.frame("编号或者name")
#切换到上一层frame
driver.switch_to.parent_frame()
#切换到指定的window_name
driver.switch_to.window()


九、增强脚本

9.1 检查点

 in运算符,用于判断字符是否存在于另外一个字符中

 if语句,判断条件是否成立

if 条件 :执行语句;
"abc" in "abcd"

9.2 读取txt文件

读取txt文件采取file=open(文件名,'r')返回文件对象,文件默认编码utf-8,r表示读取文件

遍历文件需采用for循环

如果需要对文件数据进行提取可采用split()分割函数

#打开文件
file=open("文件名","r");
for x in file :print(x)#把文件中所有行读取到一个列表中,换行符可以读出list=file.readline();
#关闭文件
file.close()

9.3 读取EXCEL

需要安装pandas才可以使用读取EXcel

当无列名c

import pandas
#读取数据
data=pandas.read_excel("文件位置",names=['别名'],dtype={'列号':数据类型})
print(data)

9.4 访问数据库

需要安装pymysql,这是用于支持python连接mysql

连接数据库conn=pymysql.connect(host='服务器 IP', port=3306, user='用户名', passwd='密码',
db='数据库名', charset='utf8')

import pymysql
#连接数据库
conn=pymysql.connect(host="localhost",port=3306,user="数据库用户名",password="密码",db="数据库名称",charset="utf8");
#用游标读取数据
rs=conn.cursor();
#写sql语句
sql="";
rs.execute(sql);
#获取数据,是以元组的形式
data=rs.fetchall();
#关闭游标
rs.close()
#关闭数据库
conn.close()
print(data)

数据库添加数据

import pymysql
#连接数据库
conn=pymysql.connect(host="localhost",port=3306,user="root",password="123456",db="jhh",charset="utf8");
#游标
rs=conn.cursor();
#sql语句
sql="insert 语句";
rs.execute(sql);
#提交数据库,不可省略
conn.commit();
rs.close();
conn.close();

批量添加数据,可以使用一次性批量提交数据

import pymysql
#连接数据库
conn=pymysql.connect(host="localhost",port=3306,user="root",password="123456",db="jhh",charset="utf8");
data=[];
for i  in range(1,10):
#将元组存入列表data.append();
sql="insert 语句"
#存入批量数据
rs.executemany(sql,data);
conn.commit();
rs.close();
conn.close();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【服务器】服务器进程运行不受本地终端影响的方法总结

服务器进程运行不受本地终端影响的方法总结 1. 使用 nohup2. 使用 setsid3. 将命令放入后台 (&)总结参考 为了确保在集群或服务器上运行的长时间作业不受本地计算机网络中断或用户注销的影响,可以使用以下三种方法:nohup、setsid 和将命令放入后台 (…

Ubuntu 20.04下Kinect2驱动环境配置与测试【稳定无坑版】

一、引言 微软Kinect2传感器作为一个包含深度传感器、RGB摄像头以及红外摄像头的多模态采集设备,在计算机视觉、机器人感知、人体姿态识别、3D建模等领域有着广泛应用。相比第一代Kinect,Kinect2拥有更好的深度分辨率和更高的数据质量。本文将详细介绍如…

深度学习-75-大语言模型LLM之基于llama.cpp和Transformers与Qwen(通义千问)因果语言模型交互

文章目录 1 Qwen2.51.1 模型介绍1.2 Qwen2.5-0.5B模型1.3 llama.cpp支持Qwen架构2 下载模型2.1 Huggingface镜像网站整体下载2.2 阿里魔塔社区整体下载2.3 模型Qwen2.5-0.5B-Instruct-IQ3_M.gguf3 推理方式3.1 llama.cpp启动模型3.1.1 补全3.1.2 聊天3.2 使用transformers库3.2…

Flask入门:打造简易投票系统

目录 准备工作 创建项目结构 编写HTML模板 编写Flask应用 代码解读 进一步优化 结语 Flask,这个轻量级的Python Web框架,因其简洁和易用性,成为很多开发者入门Web开发的首选。今天,我们就用Flask来做一个简单的投票系统,让你快速上手Web开发,同时理解Flask的核心概…

ApacheStruts2 目录遍历与文件上传漏洞复现(CVE-2024-53677,S2-067)(附脚本)

0x01 产品描述: Apache Struts 2 是一个用于JAVA的MVC框架,它用于快速开发web应用。它的设计目标是使得开发者能够更容易的处理web应用的展现层,数据层,和业务层。0x02 漏洞描述: CVE-2024-53677 漏洞的根本原因是 Struts 框架中不安全的文件上传处理机制。攻击者利用 CVE…

Cadence学习笔记 9 器件封装匹配

基于Cadence 17.4,四层板4路HDMI电路 更多Cadence学习笔记:Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制Cadence学习笔记 5 四路HDMI原理图绘制Cadence学习笔记…

2011年IMO几何预选题第5题

△ A B C \triangle ABC △ABC 内心为 I I I, 外接圆在 B B B, C C C 两点处的切线交于 P P P, D D D, E E E 分别为 B I BI BI, C I CI CI 与外接圆的交点, D E DE DE 分别交 A B AB AB, A C AC AC 于点 M M M, N N N, 过 M M M 作 B I BI BI 平行线, 过 N N …

Python构造方法:对象的“开机启动程序”

在Python中,构造方法(__init__)是一个类的“生命之初”,定义了每个对象从“出生”到“投入使用”的整个初始化过程。那既然类里可以直接写属性,为什么还需要构造方法呢? 构造方法的核心作用:创…

Superset 和 Appsmith的对比

对于报表数据需要给到前端进行定制化展示,并且直接提供基于报表的 API 让前端调用,以下是对 Superset 和 Appsmith 的对比分析: 1. Apache Superset API 支持 Superset 提供 REST API 接口,可以让前端调用获取报表数据。前端可以…

idea | maven项目标红解决方案 | 强制刷新所有依赖

场景:父pom多模块,新增时,依赖正常,但是application.yml看起来没被springboot识别,试过rebuild、重开idea清除缓存,重新maven面板reload all maven projects, 试过pom文件的依赖先移除再重新粘贴导入进来&a…

Nginx常用配置详解(1)

Nginx常用配置详解 一、全局块(main)配置 在Nginx的配置文件中,最外层的部分是全局块。这部分配置通常会影响Nginx服务器整体的运行参数。 worker_processes 作用:这个配置指令用于指定Nginx工作进程的数量。工作进程是Nginx处理…

单幅图像合成 360° 3D 场景的新方法:PanoDreamer,可同时生成全景图像和相应的深度信息。

论文介绍了一种从单幅图像合成 360 3D 场景的新方法。该方法以连贯的方式生成全景图及其相应的深度,解决了现有最先进方法(如 LucidDreamer 和 WonderJourney 的局限性。这些方法按照生成轨迹依次添加细节,通常在循环回输入图像时导致可见的接…

Linux —— 管理进程

一、查看进程 运行态(Running) 定义:处于运行态的进程正在 CPU 上执行指令。在单 CPU 系统中,同一时刻只有一个进程处于运行态;在多 CPU 或多核系统中,可能有多个进程同时处于运行态。示例: 当…

Kubernetes中subPath

在Kubernetes(K8s)中,当容器关闭时,其使用的subPath目录的清理行为取决于几个因素。首先,subPath允许Pod中的容器挂载共享卷的一个子目录,而不是整个卷。这种机制有助于避免不同容器间的文件冲突。 容器关闭…

前端(组件传参案例)

父组件(商品详情页) 子组件上边放大图 底下缩小轮播图 需求分析:父组件获取图片数据,传给底下子组件进行进行轮播,实现父组件给子组件传参。然后底下子组件轮播后,把当前图片下标给父组件,实现子组件给父组件传参。父组…

Linux基础 -- 查看程序注册了的信号的方案

程序注册了哪些信号的方案 方法 1:使用 strace 动态追踪信号处理注册 strace 是一个强大的工具,可以动态捕获程序对信号的处理注册行为(如 sigaction 或 signal 系统调用)。 示例 启动程序并追踪信号注册: strace…

数据库设计的四大原则:优化性能、保证一致性与高效处理

目录 一. 数据冗余最小化 二. 数据一致性 三. 事务处理 四. 查询性能优化 数据库设计不仅是关于创建表和字段的简单任务,更是构建一个高效运行、易于维护且能够确保数据一致性的系统的核心。一个好的数据库设计不仅能提升应用程序的性能,还能为未来的…

What‘s Next on TON 成都站|聚焦生态创新,共享技术前沿

2024 年,TON 生态为何持续吸引全球开发者和用户的关注?在经历了一系列重要的技术更新和生态扩展后,TON 正在迎来一个爆发式增长的阶段。作为全球四城巡回沙龙的第三站,成都站的活动将如何继续推动这一势头,带来哪些不容…

算法-动态数组-62.不同路径

一、题目 二、思路解析 1.思路&#xff1a; 对于找到目的地它的来源主要来源于目的地的上一格和目的地的左一格 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.处理边界&#xff1a; a.只向右移动&#xff0c;至始至终只有一条路径 for(int i0;i<m;i){dp[i][0]1; } …

近端策略优化(Proximal Policy Optimization, PPO)详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…