首页 > 编程语言 >Python+Selenium.webdriver实现WEB端UI自动化测试

Python+Selenium.webdriver实现WEB端UI自动化测试

时间:2023-04-09 18:02:52浏览次数:61  
标签:webdriver elif WEB Python driver find element data method

本篇记录基于Python+Selenium.webdriver实现WEB端UI自动化测试,其中测试用例使用excel维护。

 

1.项目选取(登录页无验证码校验的项目)

该示例选取的是登录页不需要输入验证码校验的基础页面(考虑到现在大部分项目都是需要进行验证码校验的,后面研究后再出一篇相关的分享。)

 

2.环境搭建

2.1安装Python

官网目前已经更新到python3.9.7,大家可以到官网下载并安装

2.2安装Selenium

命令:pip install selenium

或使用pycharm安装

2.3安装浏览器驱动

1.以Google Chrome浏览器为例,打开浏览器--帮助--关于Google Chrome,查看浏览器版本。

2.访问http://chromedriver.storage.googleapis.com/index.html,下载浏览器对应版本号的驱动软件。

3.驱动文件放到python的安装目录下(和python.exe相同目录)。

 

3.项目示例

3.1测试数据

包括编号、用例描述、元素定位方法及对应数据,定位到元素后的操作方法及数据。

 

3.2 通用脚本代码(可复用)

示例脚本:Selenium_UI_Test.py

from selenium import webdriver
from selenium.webdriver.support.select import Select

class Selenium_UI_Test01(object):
   """
  1.8种元素定位方法
  2.quit()-退出,关闭所有标签页;
  3.refresh()-浏览器刷新
  """
   def selemium_find_element(self,driver,method,data):
       if method == "find_element_by_id":
           return driver.find_element_by_id(data)
       elif method == "find_element_by_name":
           return driver.find_element_by_name(data)
       elif method == "find_element_by_class_name":
           return driver.find_element_by_class_name(data)
       elif method == "find_element_by_tag_name":
           return driver.find_element_by_tag_name(data)
       elif method =="find_element_by_link_text":
           return driver.find_element_by_link_text(data)
       elif method == "find_element_by_partial_link_text":
           return driver.find_element_by_partial_link_text(data)
       elif method == "find_element_by_xpath":
           return driver.find_element_by_xpath(data)
       elif method == "":
           return driver.find_element_by_css_selector(data)
       elif method =='refresh':
           return driver.refresh()
       elif method =='quit':
           return driver.quit()
       else:

           print("请检查元素定位方法是否正确!")

           #定位到元素后可执行的操作
           #1.点击和输入:clear()-清空输入框、click()-点击、send_keys()-发送关键字
           def operator_element(self,element,method,data):
               if "click" in method:
                   element.click()
                   elif "send_keys" in method:
                       element.send_keys(data)
                       elif "clear" in method:
                           element.clear()
                           elif 'select' in method:
                               Select(element).select_by_index(data)
                               else:
                                   print("请检查操作方法是否正确!")

 

3.3测试用例脚本 示例脚本:

Selenium_UI_Test_gsc.py 读取excel中的测试用例,调用通用脚本中定义的方法,执行测试用例。

from openpyxl import load_workbook
from selenium import webdriver
import common.Selenium_UI_Test as SUT
sut = SUT.Selenium_UI_Test01()
import time
t = time.strftime("%Y%m%d%H%M")

driver = webdriver.Chrome()
driver.get("https://www.52shici.com/")
wb = load_workbook("..\\datas\我爱古诗词UI测试.xlsx")
ws = wb.worksheets[0]
for row in ws.iter_rows(min_row=2,max_row=ws.max_row):#跳过首行表头信息
   method1= row[2].value
   data1 = row[3].value
   method2 = row[4].value
   data2 = row[5].value
   element = sut.selemium_find_element(driver,method1,data1)
   result=sut.operator_element(element,method2,data2)

   row[6].value="pass"

   wb.save(f"..\\Reports\我爱古诗词UI测试_{t}.xlsx")

 

3.4执行结果 自动打开浏览器,跳转到登录页面并完成登录,自动输入页面信息并提交。

自动生成excel测试结果

 

 

原文链接:https://blog.csdn.net/laofashi2015/article/details/120435538

标签:webdriver,elif,WEB,Python,driver,find,element,data,method
From: https://www.cnblogs.com/dzwj/p/17300688.html

相关文章

  • python基础十(常用模块)
    一time与datetime模块1、timeimporttime#时间分为三种格式:#1、时间戳:从1970年到现在经过的秒数#作用:用于时间间隔的计算print(time.time())#1680886728.1569963#2、按照某种格式显示的时间:2022-07-0617:12:11#作用:用于展示时间print(time.strftime('%Y-%......
  • python Selenium自动化测试
    转载自https://blog.csdn.net/tangya3158613488/article/details/106902110 Selenium自动化测试什么是自动化测试自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。总的概括即:将人为驱动的测试行为转化为机器执行的......
  • 多表查询和python操作mysql
    目录多表查询的两种方法方法1:连表操作方法2:子查询小知识点补充说明可视化软件NaviCat多表查询练习题1、查询所有的课程的名称以及对应的任课老师姓名2.查询平均成绩大于八十分的同学的姓名和平均成绩3.查询没有报李平老师课的学生姓名4.查询没有同时选修物理课程和体育课程的学生......
  • JavaWeb-24课-filter-2023-04-09
    Servlet类,没有乱码处理packagecom.feijian.servlet;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;public......
  • Python DeprecationWarning: executable_path has been deprecated, please pass in a
    借鉴https://blog.csdn.net/lly1122334/article/details/106217320https://blog.csdn.net/qq_57377057/article/details/128463296https://blog.csdn.net/tangya3158613488/article/details/106902110 将之前谷歌浏览器的105版本替换为110版本解决Python:DeprecationWar......
  • Python正则表达式
    本章将介绍Python中正则表达式,本文将会基于Python的标准库re模块讲解正则表达式。1、正则表达式的基本使用1.1、re.search(正则表达式,待匹配文本)我们可以使用re.search查询待匹配文本中是否存在可以匹配上的字符串,直接上例子。importrematch=re.search(r'pytho......
  • python-matplotlib库
    学习过程中跟着敲的代码:importmatplotlib.pyplotaspltfrommatplotlib.imageimportimreadplt.rcParams["font.sans-serif"]=['ArialUnicodeMS']#设置字体#plt.rcParams["axes.unicode_minus"]=False#该语句解决图像中的“-”负号的乱码问题#x=np.arange(-n......
  • JavaWeb-JSP-JSTL c foreach -2023-04-09
    <%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><%@pageimport="java.util.ArrayList"%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html>&l......
  • python获取某单元格的行和列
    解决问题:在读取excel时,假如读取到了我想要的数据,则返回它所在的行和列importopenpyxl#打开Excel文件并选择工作表wb=openpyxl.load_workbook(r'D:\Users\72036454\Desktop\test.xlsx')sheet=wb['Sheet1']#遍历整个工作表,查找特定值target_value='hello'......
  • Navicat软件、python操作MySQL
    目录Navicat软件1.软件简介2.navicat基本操作python操作MySQL1.链接、执行sql、关闭(游标)2.查询结果3.增删改查4.使用pymysql写一个注册和登录的案例Navicat软件1.软件简介第三方开发的用来充当数据库客户端的简单快捷的操作界面 无论第三方软件有多么的花里胡哨,底层的本质还......