Windows:web端UI自动化=python+selenium+pycharm框架

news2025/1/15 23:22:09

本篇写怎么写一个UI自动化代码。mac和Windows是一样的 都是这样写 不过,习惯用Windows了

如果python没有安装可以看我另一篇安装python的教程 先安装python先

下载完python 下载pip

1 安装pip
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py  # 下载安装脚本
$ sudo python get-pip.py   # 运行安装脚本

首先下载安装对应的库及浏览器驱动

1python环境下安装selenium

终端输入:pip install selenium

检查selenium是否安装成功:pip lis 或者pip show selenium

2若想使 Selenium 能够调用浏览器,那么必须通过 webdriver 驱动来实现。不同的浏览器需要使用不同驱动程序,下面列出了不同浏览器驱动程序的下载地址:

谷歌浏览器 chromedrive:chromedriver.storage.googleapis.com/index.html

火狐浏览器 geckodriver:Releases · mozilla/geckodriver (github.com)

IE 浏览器 IEDriver:selenium-release.storage.googleapis.com/index.html

2.1检查;浏览器的版本,比如Chrome:帮助-关于Chrome

2.2下载跟浏览器版本相同的驱动(大版本相同即可)

看看刚刚查的谷歌浏览器版本找到对应驱动,比如我的122.0.6261.129 就不可以下载

因为 最高也才114  ,版本对不上会驱动不了,现在得重新下载个低版本的浏览器了

虽然我电脑的64位的,但是并没有64位,所以下载win32就行

2.3将浏览器的安装位置路径添加到环境变量里

下载后,解压,然后将解压出来的chromedriver.exe文件放入一个已经加入环境变量的目录中,或者将chromedriver.exe所在目录加入环境变量。

推荐将chromedriver.exe放入python安装目录下的Scripts目录中,因为该目录之前安装python环境时已经添加到了path环境变量中了,如:我的python安装目录是C:\Users\Administrator\AppData\Local\Programs\Python\Python38,如下图

2.4启动浏览器驱动 :chromedriver

终端输入:chromedriver

最后selenium的基础使用:python自动化框架代码

# 先导入后续要使用的包
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 创建一个webDriver的实例,接下来的所有操作都是在该实例上进行,以Chrome实例为例
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 访问百度网址
driver.get("https://www.baidu.com/")
# 通过元素id找到对应元素并输入值进行搜索;此处为在百度搜索框输入selenium并点击查询
driver.find_element(By.ID,"kw").send_keys("selenium")
driver.find_element(By.ID,"su").click()
time.sleep(2)

再者补充一下定位元素方法 及注意的点

注意:

1定位元素的时候需要确定唯一性,可以在检查页面搜索它是不是唯一的。

2当页面内存在多个相同的定位特征值时,则定位方法默认会返回第一个符合条件的元素。

3定位原则:无论使用哪一种元素定位方法,都必须先保证期特征能够代表对应元素在当前页面的唯一性。

元素定位方法

1利用元素定位:先看id 再看name 其次是class

通过ID定位:使用元素的唯一ID进行定位。

driver.find_element_by_id("element_id")

 通过Name定位:使用元素的name属性进行定位。

driver.find_element_by_name("element_name")

 通过Class Name定位:使用元素的class属性进行定位。

driver.find_element_by_class_name("element_class")

通过Tag Name定位:使用元素的标签名进行定位。

 driver.find_element_by_tag_name("tag_name")

2超链接定位 :Link Text 全部文本信息、Partial Link Text 部分文本信息

通过Link Text定位:使用链接文本进行定位(适用于<a>标签)。

 driver.find_element_by_link_text("link_text")

 通过Partial Link Text定位:使用部分链接文本进行定位。

 driver.find_element_by_partial_link_text("partial_link_text")

3路径定位:XPath路径

通过XPath定位:使用元素在HTML结构中的路径进行定位。XPath是一种强大的定位方法,可以精确定位元素。

driver.find_element_by_xpath("xpath_expression")

其他说明:路径(相对路径)/绝对路径 ,最后full,属性,属性与逻辑结合, 属性与层级结合,属性包含,理由元素文本

4选择器定位:CSS选择器。

driver.find_element_by_css_selector("css_selector")

其他说明: id选择器 class选择器 属性选择器 元素选择器 层级选择器 属性选择器

拓展1:录制脚本

使用Selenium IDE

安装 在浏览器的拓展和主题 搜Selenium IDE  (去chrome的拓展和主题居然让我更新浏览器先 重新找能直接安装的包)

下载地址:下载适用于Chrome的Selenium IDE 3.17.2 CRX文件 - Crx4Chrome

在别的地方下载好的拓展包导入chrome浏览器:打开扩展程序,把包拉进来就行

使用方法:点击图标启动工具——点击Record a new test in a new project 选第二个——填写工程名——填写要录制的项目地址   带协议头的请求地址:"https://www.baidu.com"——操作   点击停止录制按钮——填写测试名称——可以降低回放速度 ——导出脚本功能 Tests ——选择熟悉语言 Export ——放桌面用编辑器打开查看脚本,编辑器就是之前说安装的Notepad++ 

 

拓展2:其他操作

1自己写的基础代码 可以在PyCharm中设置自定义代码模板(Live Templates),后面直接使用

全选,点击codo/tools ——save as live template ....忘记了

移除:File——settings ——搜 live ——live templates ——点击 -号移除

2代码快速复制:Ctrl +D

快速移动:shift + alt + ↓ 键盘上下箭头

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

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

相关文章

k8s配置configmap指定到容器的指定文件

我们需要将名称为walletkey.properties的文件做成configmap&#xff0c;然后将walletkey.properties文件单独挂载出来到/data/walletkey.properties&#xff0c;且不能覆盖/data目录&#xff0c;具体如下 1、创建configmap configmap文件内容 其中walletkey.properties: >-引…

统一SQL-支持CHAR和VARCHAR2 (size BYTE|CHAR)转换

统一SQL介绍 https://www.light-pg.com/docs/LTSQL/current/index.html 源和目标 源数据库&#xff1a;Oracle 目标数据库&#xff1a;Postgresql&#xff0c;TDSQL-MySQL&#xff0c;达梦8&#xff0c;LightDB-Oracle 操作目标 在Oracle中的CHAR和VARCHAR2数据类型&…

【STM32HAL库】外部中断

目录 一、中断简介 二、NVIC 1.寄存器 2.工作原理 3.优先级 4.使用NVIC 三、EXTI 1.简介 2.AFIO&#xff1a;复用功能IO&#xff0c;主要用于重映射和外部中断映射配置​编辑 3. 中断使用 4.HAL库配置使用 一、中断简介 中断的意义&#xff1a;高效处理紧急程序&#xff0c;不会…

小程序 前端如何用wx.request获取 access_token接口调用凭据

在微信小程序中&#xff0c;获取access_token通常是通过wx.request方法来实现的。以下是一个简单的示例代码&#xff1a; 1.获取小程序的appID 与 secret&#xff08;小程序密钥&#xff09; 登录之后,请点击左侧的"开发管理">点击"开发设置" 就可以找…

【AI开发:音频】一、GPT-SoVITS整合工具包的部署问题解决(GPU版)

前言 目前GPT-SoVITS的合成效果比较不错&#xff0c;相比较其他厂商的产品要规整的多。众多厂家中也是国内使用最多的一款了&#xff0c;并且这个整合包里携带了&#xff0c;除背景音、切割、训练、微调、合成、低成本合成等一些列完整的工具&#xff0c;也可以作为API进行使用…

C++ | Leetcode C++题解之第38题外观数列

题目&#xff1a; 题解&#xff1a; class Solution { public:string countAndSay(int n) {string prev "1";for (int i 2; i < n; i) {string curr "";int start 0;int pos 0;while (pos < prev.size()) {while (pos < prev.size() &&…

iOS -- 工厂设计模式

iOS -- 工厂设计模式 设计模式概念设计模式七大准则简单工厂模式优点缺点主要作用示例 工厂方法模式优点缺点主要作用&#xff1a; 抽象工厂方法缺点主要作用&#xff1a;文件分类 设计模式概念 所谓设计模式&#xff08;Design pattern&#xff09; 是解决软件开发某些特定问…

深入理解JAVA垃圾收集器CMS,G1工作流程原理 GC流程图 什么社会触发Minor GC?触发MinorGC过程。Full GC 过程。

java CMS&#xff0c;G1垃圾收集器工作流程原理浅析 JVM内存空间基础知识点&#xff08;基于JDk1.8&#xff09; 1.方法区&#xff1a;逻辑概念&#xff0c;元空间&#xff0c;方法区主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻辑上属于堆的一部分&#xf…

UE4_动画基础_根运动Root Motion

学习笔记&#xff0c;仅供参考&#xff01; 在游戏动画中&#xff0c;角色的碰撞胶囊体&#xff08;或其他形状&#xff09;通常由控制器驱动通过场景。然后来自该胶囊体的数据用于驱动动画。例如&#xff0c;如果胶囊体在向前移动&#xff0c;系统就会知道在角色上播放一个跑步…

C#语法知识之循环语句

5、循环语句 文章目录 1、while思考1 斐波那契数列思考2 判断一个数是否为质数思考3 找出100以内的质数 2、do...while3、for思考1 找水仙花数思考2 乘法表 1、while 1、作用 让代码重复去执行 2、语法相关 while(bool类型值){//当满足条件时&#xff0c;就会执行while语句…

深度学习每周学习总结P5(运动鞋识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入及处理部分2. 加载数据集3.模型构建部分3.1 模型构建3.2 公式推导 4. 设置超参…

深度强化学习开端——DQN算法求解车杆游戏

深度强化学习开端——DQN算法求解车杆游戏 DQN&#xff0c;即深度Q网络&#xff08;Deep Q-Network&#xff09;&#xff0c;是一种结合了深度学习和强化学习的算法&#xff0c;其主要用于解决序列决策问题&#xff0c;并且在许多复杂的决策任务中展现出了显著的效果。DQN算法…

C++:map和set的使用

一、关联式容器介绍 在学习map和set之前&#xff0c;我们接触到的容器有&#xff1a;vector、list、stack、queue、priority_queue、array&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 关联式容器也是用…

【JavaEE多线程】线程中断 interrupt()

系列文章目录 &#x1f308;座右铭&#x1f308;&#xff1a;人的一生这么长、你凭什么用短短的几年去衡量自己的一生&#xff01; &#x1f495;个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️&#xff1a;清灵白羽 漾情天…

用FRP配置toml文件搭建内网穿透

需求场景 1、一台外网可访问的有固定ip的云服务器&#xff0c;Ubuntu系统 2、一台外网无法访问的无固定ip的本地家用电脑&#xff0c;Ubuntu系统 需求&#xff1a;将云服务器搭建为一台内网穿透服务器&#xff0c;实现通过外网访问家用电脑&#xff08;网页&#xff09;的功能。…

Unity 中(提示框Tweet)

using UnityEngine; using UnityEngine.UI; using DG.Tweening; using System; public class Message : MonoBehaviour {public float dropDuration 0.5f; // 掉落持续时间public float persisterDuration 1f; // 持续显示时间public float dorpHeight;public static Message…

AWS账号注册以及Claude 3 模型使用教程!

哈喽哈喽大家好呀&#xff0c;伙伴们&#xff01;你听说了吗&#xff1f;最近AWS托管了大热模型&#xff1a;Claude 3 Opus&#xff01;想要一探究竟吗&#xff1f;那就赶紧来注册AWS账号吧&#xff01;别担心&#xff0c;现在注册还免费呢&#xff01;而且在AWS上还有更多的大…

macos知名的清理软件 cleanmymac和腾讯柠檬哪个好 cleanmymacx有必要买吗

MacOS是一款优秀的操作系统&#xff0c;但是随着使用时间的增加&#xff0c;它也会产生一些不必要的垃圾文件&#xff0c;占用磁盘空间和内存资源&#xff0c;影响系统的性能和稳定性。为了保持MacOS的清洁和高效&#xff0c;我们需要使用一些专业的清理软件来定期扫描和清除这…

DePIN 赛道黑马,peaq network 如何打造全新 Web3 物联网?

当 Web2 公司仍对用户数据和资料进行“中心化”的收集与控制时&#xff0c;我们虽享受到了物联网技术的便利&#xff0c;却依旧没有逃脱个人数据和价值所有权的剥夺。由此&#xff0c;Web3 技术开始深入物联网世界&#xff0c;智能家居、智能汽车、智能手机都成为重要发力点&am…

三大层次学习企业架构框架TOGAF

前言 对于一名架构师来讲&#xff0c;如果说编程语言是知识库层次中的入门石&#xff0c;那么企业架构框架则相当于知识库层次中的金字塔尖。如果想成长为企业级的架构师&#xff0c;企业架构框架是必须要攀登的高塔。 目前国内绝大多数企业采用TOGAF标准&#xff0c;因此我们…