自动化测试工具slelnium的初体验

1.slelnium介绍

        1.1 一个Web的自动化测试工具,最初是为网站自动化测试而开发的。

        1.2 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。

      1.3 跨平台:linux、windows、mac ;

      简单点说:是一款Web应用程序测试的工具:可以在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转换为机器执行的过程。

2.工作原理

        2.1 利用浏览器原生API封装成一套面向对象的Selenium WebDriver API;直接操作浏览器页面里面的元素,甚至操作浏览器本身,例如截屏,窗口大小,启动,关闭,安装插件,配置证书

       2.2 webdriver本质是一个web-server,对外提供webapi,封装了浏览器各种功能;不同浏览器使用不同的webdriver

3.环境搭建

   3.1 python环境

        python下载地址 Download Python | Python.org

        我是下载的zip包 python-3.11.5-embed-amd64,解压到D盘

       下载pycharm地址: 下载PyCharm:JetBrains为专业开发者提供的Python IDE 

     

       关于python直接解压即可(注意,这个时候是看不到"Scripts",也不会看到 "Lib/site-packages")

      3.2 设置环境变量

        

        

pycharm是你安装的路径,本文我是放在D盘下

         

接着,我们 https://bootstrap.pypa.io/get-pip.py  打开之后,将其保存为get-pip.py;放在桌面即可;

不要着急运行,打开windosw文件管理窗口,输入地址 %APPDATA%,然在进入appdata,在这个文件夹下创建pip文件夹,然后新建一个pip.ini的文件,在文件里面填写如下内容(

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

) 保存;

然后cmd进入get-pip.py文件路径,执行 python get-pip.py;等待安装完成即可,安装按成之后,

可以看到多了lib和scripts文件夹;

继续设置环境变量

PS:记住用户变量和系统变量都要设置额;

输入python --version 查询到版本号表示安装设置成功。

3.2 安装selenium

     pip install selenium 运行此命令安装即可

    下载对应版本的webdriver(记住要和你浏览器版本大版本号一致额)

   国内地址: chromedriver镜像http://npm.taobao.org/mirrors/chromedriver/

   如果找不到对应浏览器版本的,也不要着急我们还有办法

ChromeDriver - WebDriver for Chrome - Downloads  官网下载嘛

可能你的和我的一样都是116,两个网站都没有对应版本,不着急哈,115的也是可以的

下载好了,直接解压到此路径(然后复制一份放到D:\sofaware\python-3.11.5-embed-amd64)

ok,到此结束了吗?不是额,还要设置环境变量额

这才是真的结束啦,可以开始玩耍了;

下面就是利用测试工具写的一个小demo

import timefrom selenium import webdriver
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 创建WebDriver实例
driver = webdriver.Chrome()# 打开网页
driver.get('https://xxx.com/home')# 等待10秒# 通过class找到 'avator-txt'的标签,等待找到之后点击该标签
btn = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.btn.btn-main')))
print(btn.text)
btn.click()
js = 'document.querySelector("btn btn-main").click();'
# driver.execute_script(js)
ActionChains(driver).move_to_element(btn).click().perform()
wait = WebDriverWait(driver, 10)
# 继续查找'ant-input'标签,等待找到第1和第二个
ant_inputs = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'ant-input')))
print(ant_inputs)
# ant_inputs是一个包含所有'ant-input'元素的列表,你可以通过索引访问它们
first_ant_input = ant_inputs[0]
second_ant_input = ant_inputs[1]
WebDriverWait(driver, 10)
first_ant_input.send_keys("yonghu")
second_ant_input.send_keys("mima")
btnLogin = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.btn-login.ant-btn.btn-login.btn-login-active')))
ActionChains(driver).move_to_element(btnLogin).click().perform()
print("开始延时")
time.sleep(15)
print("结束")
# 操作完成后,关闭浏览器
# driver.quit()

这是一个简单的例子,打开一个网站,找到输入账号和密码的标签;输入账号和密码,点击登录。

ok,领导安排研究一下,没办法,花了几天时间搞得,有问题大家共同讨论

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

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

相关文章

代码随想录Day41| 343. 整数拆分 |

343. 整数拆分 class Solution { public:int integerBreak(int n) {vector<int> f(n1,0);f[2]1;for(int i3;i<n;i){for(int j1;j<i-1;j){f[i]max(f[i],max(f[i-j]*j,(i-j)*j));}}return f[n];} }; 96. 不同的二叉搜索树 class Solution { public:int numTrees(int…

Flask 使用 JWT(二)

在 Python 使用 JWT 主要的方案是 PyJWT 工具。 安装与基本使用 可以使用 pip 安装 PyJWT: $ pip install pyjwt编码与解码 编码函数 def encode( self, payload: Dict[str, Any], # payload 参数 key: str, …

SkyWalking快速上手(六)——告警

文章目录 前言一、什么是SkyWalking的告警功能二、为什么要使用SkyWalking的告警功能1. 及时发现异常情况2. 提高故障处理效率3. 避免数据丢失和损坏4. 提升系统性能和稳定性 三、如何使用SkyWalking的告警功能1. 告警规则2. 告警通知3. 告警持续时间 四、注意事项1、合理设置告…

23062QTday2

完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两个按钮…

vim使用

一、vim配置文件 "查看自己的vimrc所在的目录 "在命令模式下 :echo $MYVIMRC"打开自己的vimrc文件 "在命令模式下 :e $MYVIMRC 二、字体 "查看自己当前的字体及大小 "在命令模式下 :set guifont?"设置默认的字体为仿宋_GB2312&#xff…

ROS 入门

目录 简介 ROS诞生背景 ROS的设计目标 ROS与ROS2 安装ROS 1.配置ubuntu的软件和更新 2.设置安装源 3.设置key 4.安装 5.配置环境变量 安装可能出现的问题 安装构建依赖 卸载 ROS架构 1.设计者 2.维护者 3. 立足系统架构: ROS 可以划分为三层 ROS通信机制 话…

react d3使用循环显示多个地图

首先需要写一个组件&#xff1a; import React, { useState, useEffect, useRef } from react; import ChinaMap from moment; import * as d3 from d3; import chinaGeoJson from china-geojson/src/geojson/china.json;const MyMapToShowResult ({ realData }) > {const…

笔记 | 十六进制不进位加法

这里写自定义目录标题 题目极笨代码错误原因正确代码 题目 Time Limit: 1000 ms Memory Limit: 256 mb 16进制不进位的加法&#xff0c;即和正常加法类似&#xff0c;只是不用去计算进位的数&#xff0c;比正常的加法更简单。 如A 6 0&#xff08;正常加法是10&#xff0c;…

使用JAXB将xml转成Java对象

文章目录 使用JAXB将xml转成Java对象1. xml内容2. Java对象类3. 封装的工具类4. 测试 使用JAXB将xml转成Java对象 工作中遇到个问题&#xff0c;需要将xml转对象&#xff0c;之前复杂的xml都是自己用dom4j来解析组装成Java对象&#xff0c;但是对于简单的&#xff0c;看到了JAX…

SQL中的PowerDesigner逐步深入提问,你能掌握多少?

你提到了有PowerDesigner操作经验&#xff0c;请解释一下PowerDesigner是什么&#xff0c;以及它在数据库设计和开发中的作用是什么&#xff1f; 标准回答&#xff1a; PowerDesigner是一种数据库建模和设计工具&#xff0c;它用于创建数据库模型、设计表结构、定义关系和生成…

android.support.multidex.MultiDexApplication:DexPathList

修改项目的build.gradle文件&#xff0c;使用multidex并添加multidex库作为依赖&#xff0c;如下所示&#xff1a; android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 28 multiDexEnabled true } ... } dependencies { compile com.android.support:multidex…

【漏洞复现】Smanga未授权远程代码执行漏洞(CVE-2023-36076) 附加SQL注入+任意文件读取

文章目录 前言声明一、产品简介一、漏洞描述二、漏洞等级三、影响范围四、漏洞复现五、修复建议六、附加漏洞漏洞一、SQL注入漏洞二、任意文件读取 前言 Smanga存在未授权远程代码执行漏洞,攻击者可在目标主机执行任意命令,获取服务器权限。 声明 请勿利用文章内的相关技术从…

windows彻底卸载unity

1.控制面板卸载 双击打开桌面的控制面板&#xff0c;选择卸载程序&#xff0c;选中Unity和UnityHub右击卸载。 2.清除unity的注册表 在运行中输入“regedit”双击打开注册表界面 删除 HKEY_CURRENT_USER\Software\Unity 下所有项 删除 HKEY_CURRENT_USER\Software\Unity Tec…

电脑怎么取消磁盘分区?

有时候&#xff0c;我们的电脑会出现一个磁盘爆满&#xff0c;但另一个却空着&#xff0c;这时我们可以通过取消磁盘分区来进行调整&#xff0c;那么&#xff0c;这该怎么操作呢&#xff1f;下面我们就来了解一下。 磁盘管理取消磁盘分区 磁盘管理是Windows自带的磁盘管理工具…

BMS电池管理系统的蓝牙芯片 国产高性能 低功耗蓝牙Soc芯片PHY6222

电池管理系统是对电池进行监控与控制的系统&#xff0c;将采集的电池信息实时反馈给用户&#xff0c;同时根据采集的信息调节参数&#xff0c;充分发挥电池的性能。但是&#xff0c;前技术中&#xff0c;在管理多个电池时&#xff0c;需要人员现场调试与设置&#xff0c;导致其…

leetcode Top100 (5) 盛最多水的容器

/*** 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。* <p>* 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。* <p>* 返回容器可以储存的最大水量。* <p>* …

uniapp h5网页打开白屏

修改了默认基本运行路径&#xff0c;然后直接打开index.html的情况下是会这样&#xff0c;放在nginx服务器上运行就ok了。 把默认的./ 路径修改了&#xff1a;/cloudh5 nginx html目录下放子网站 &#xff1a;/cloudh5&#xff1a;

6-2 pytorch中训练模型的3种方法

Pytorch通常需要用户编写自定义训练循环&#xff0c;训练循环的代码风格因人而异。&#xff08;养成自己的习惯&#xff09; 有3类典型的训练循环代码风格&#xff1a;脚本形式训练循环&#xff0c;函数形式训练循环&#xff0c;类形式训练循环。 下面以minist数据集的多分类模…

Spring Boot集成Redis实现数据缓存

&#x1f33f;欢迎来到衍生星球的CSDN博文&#x1f33f; &#x1f341;本文主要学习Spring Boot集成Redis实现数据缓存 &#x1f341; &#x1f331;我是衍生星球&#xff0c;一个从事集成开发的打工人&#x1f331; ⭐️喜欢的朋友可以关注一下&#x1faf0;&#x1faf0;&…

【最新面试问题记录持续更新,java,kotlin,android,flutter】

最近找工作&#xff0c;复习了下java相关的知识。发现已经对很多概念模糊了。记录一下。部分是往年面试题重新整理&#xff0c;部分是自己面试遇到的问题。持续更新中~ 目录 java相关1. 面向对象设计原则2. 面向对象的特征是什么3. 重载和重写4. 基本数据类型5. 装箱和拆箱6. …