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

2023-09-18 21:38:29

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 time

from 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,领导安排研究一下,没办法,花了几天时间搞得,有问题大家共同讨论

更多推荐

差分数组leetcode 2770 数组的最大美丽值

什么是差分数组差分数组是一种数据结构,它存储的是一个数组每个相邻元素的差值。换句话说,给定一个数组arr[],其对应的差分数组diff[]将满足:diff[i]=arr[i+1]-arr[i]对于所有0<=i<n-1差分数组的作用用于高效地实现某些特定的数组操作,如对某一范围的数组元素全部增加或减少一个固定值。例如,考

Jenkins学习笔记5

[root@localhost~]#cd/var/lib/jenkins/workspace/nginx_root_sync[root@localhostnginx_root_sync]#lltotal16-rw-r--r--1jenkinsjenkins6Sep2020:571.php-rw-r--r--1jenki

C++项目:仿mudou库实现高性能高并发服务器

文章目录一、实现目标二、前置知识(一)HTTP服务器1.概念2.Reactor模型:3.分类一、实现目标仿muduo库OneThreadOneLoop式主从Reactor模型实现高并发服务器:通过咱们实现的高并发服务器组件,可以简洁快速的完成⼀个高性能的服务器搭建。并且,通过组件内提供的不同应⽤层协议支持,也可以快速完

代码配置仓库GitLab安装部署

Github是目前世界上代码行数最多的在线软件版本配置库平台,而Gitlab是Github对应的开源版本,本文主要描述Gitlab的安装部署。https://about.gitlab.com/https://gitlab.cn/install/如上所示,从官方网站中下载不同操作系统的版本,本文主要描述Centos的安装

UML类图

优质博客:IT-BLOG-CNUML(UnidiedModelingLanguage)统一建模语言:用来设计软件的可视化建模语言,能够表达软件设计中的动态与静态信息。UML定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等9种图。IDEA展示类图及类图关系【1】选中.java或者编辑的.jav

部署Kafka

kafka:kafka_2.13-3.5.1NOTE:YourlocalenvironmentmusthaveJava8+installed.ApacheKafkacanbestartedusingZooKeeperorKRaft.Togetstartedwitheitherconfigurationfollowone

MySQL 篇

目录1、数据库三范式2、数据库事务的特性3、MySQL数据库引擎4、说说InnoDB与MyISAM的区别5、索引是什么?6、索引数据结构7、MySQL索引类型有哪些?8、索引有什么优缺点?9、索引设计原则9、使用索引应该注意些什么?10、什么是视图?11、什么是内联接、左外联接、右外联接?12、说一说drop、dele

网络安全(黑客技术)自学规划

一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程

Caton Media Xstream: 重新定义实时内容交付服务

//编者按:随着公共互联网愈加复杂,besteffort的基本原型已无法满足越来越多的有QoS保障需求的实时内容交付服务。而专线、卫星等传统解决方案存在部署成本高、周期长等问题,无法快速响应各类需求。LiveVideoStackCon邀请到了科腾科技的魏凌,为我们介绍CatonMediaXstream平台的解决方案。文

selenium环境+元素定位大法

selenium与webdriverSelenium是一个用于Web测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器WebDriver就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的SeleniumWebDriverAPI。使用这套API可以操控浏览器的开启、关闭,打开网

Springboot登录验证的统一拦截处理

在进行Springboot项目开发的时候如何把每次请求都要验证的用户进行提取拦截统一处理背景如果不进行统一的拦截处理,其实这是一个非常痛苦的一件事情,因为每次用户请求你都要去进行用户的信息(用户信息存储在session中)的验证,代码重复,所以在本篇提供一个解决方案:定义一个拦截器,把请求都进行统一的处理,如果Sess

热文推荐