selenium(7)----自动化测试脚本(python版本)

这篇具有很好参考价值的文章主要介绍了selenium(7)----自动化测试脚本(python版本)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1)HTML报告的生成:测试报告最好要生成在一个特殊的目录下面

1)在python的lib文件下面添加文件是HTMLTestRunner.py文件:

self就是当前类中的实例

网页端产品自动化测试脚本,selenium,测试工具

2)HTML报告的生成步骤:

2.1)解决HTML文件存放的问题:创建一个文件夹

2.2)HTML报告命名问题,如何进行动态命名,每一次生成的文件名称如何不一致?可以用当前的时间来进行命名?

网页端产品自动化测试脚本,selenium,测试工具

import HTMLTestRunner
import result
from selenium import webdriver
import time
import unittest
import sys
import os
class TestBaiDuThree(unittest.TestCase):
    def setUp(self):
        print("开始执行自动化测试")  self.driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
        self.baseurl="http://www.baidu.com"
        self.driver.maximize_window()
        time.sleep(3)
    def tearDown(self):
        print("自动化测试执行完毕")
        self.driver.quit()
    def testXinWen(self):
        self.driver.get(self.baseurl)
        text=self.driver.find_element_by_link_text("新闻")
        text.click()
        time.sleep(3)
        # 在这里面使用断言
        print(self.driver.title)

    if __name__ == '__main__':
        #1.创建文件夹
        #获取项目所在的工程目录,HTML报告不能和py文件混合在一起
        curpath=sys.path[0]
        if not os.path.exists( curpath+"/resultreport/"):
              os.makedirs(curpath+"/resultreport/")
        # 2.文件的创建,不能让名称重复,时间,时,分,秒名称绝对不会重复,防止文件名重复把前一个文件名进行覆盖
        now=time.strftime("%Y-%m-%d-%H %M %S",time.localtime(time.time()))
        # 打印相关信息
        str="curpath:"+curpath+"now:"+now+"time.time():"+time.time()+"/n"+"time.localtime(time.time())"+time.localtime(time.time())
        print(str)
        filename=curpath+'/resultreport/'+now+"resultport.html"
        with open(filename,'wb') as fp:
          runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"测试报告",description=u"用例执行情况",verbosity=2)
          suite = result.createsuite();
          runner.run(suite)

createsuite()方法在这里:

import unittest
def createsuite():
   discover=unittest.defaultTestLoader.discover("./TestCase",pattern="TestBaiDu*.py",top_level_dir=None)
   return discover

2)异常捕捉和错误截图:

网页端产品自动化测试脚本,selenium,测试工具

因为用例不可能每一次运行都会成功,肯定运行有不成功的时候,如果可以捕捉到错误,并且把错误截图给保存下来,这是一个非常棒的功能,也会给我们定位问题带来方便

目的:自动保存错误现场

使用方法:依靠get_screenshot_as_file(文件生成的路径+文件后缀名)就可以实现截图

网页端产品自动化测试脚本,selenium,测试工具下面我们来写一个方法来进行演示一下:哪一个函数调用这个方法,就会产生错误截图

import unittest
from selenium import webdriver
import time
import os
import sys
def GetErrorImage(driver,file_name):
    print(os.path)
    print(sys.path[0])
#创建保存错误截图的目录
    if not os.path.exists("./image"):
        os.makedirs('./image/')
#解决可能会冲突的命名方式
    now=time.strftime("%Y%m%d-%H%M%S",time.localtime(time.time()))
#正式进行错误截图
    driver.get_screenshot_as_file("./image/"+now+"-"+file_name)
    time.sleep(1)
def Test_Baidu():
     driver=webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
    driver.get("http://www.baidu.com")
    driver.find_element_by_id("kw").send_keys("王广元")
    time.sleep(3)
    driver.find_element_by_id("su").click()
    time.sleep(3)
    try:
        driver.assertNotEqual(driver.title,"百度一下你不知道",msg="不一致")
    except:
        GetErrorImage(driver, "hello.jpg")
    driver.quit()
if __name__=="__main__":
     Test_Baidu()

数据驱动:

用数据驱动去驱动一个测试用例去不断的执行直到所有的测试数据都执行完成

比如说我要进行测试一个软件的登录功能的测试步骤:

1)输入账户

2)输入密码

3)点击登录

输入正确账号错误密码  登陆失败

输入错误账号正确密码  登录失败

输入错误账号错误密码  登陆失败

输入正确账号正确密码  登陆成功

不存在的账号和密码

已经挂失的账户

已经注销的账户

用户密码输入为空

总结:这些用例的变化的只有数据,测试步骤都是一样的

1)安装数据驱动:

网页端产品自动化测试脚本,selenium,测试工具

2)检查ddt是否安装成功:

或者执行一下pip3

网页端产品自动化测试脚本,selenium,测试工具

网页端产品自动化测试脚本,selenium,测试工具

1)data注解:支持一个数据或者是多个数据的传入甚至是一个读取文件的函数,多组数据之间用[]括起来,多组数据之间使用逗号进行分割

 @data(*方法名('文件名字'))

2)unpack:多个数据传入的时候需要对一组数据进行映射,测试数据和测试方法参数的映射

3)file_data:测试数据在json文件中,和测试方法中的参数进行映射

一)使用ddt和data和unpack(多个数据传入)注解

import unittest

from ddt import ddt, data, unpack ,file_data
from selenium import webdriver
import time
@ddt
class TestBaiDu(unittest.TestCase):
 def setUp(self):
      self.driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
      self.url="http://www.baidu.com"
      self.driver.maximize_window()
 def tearDown(self):
     time.sleep(3)
     self.driver.quit()

 @data("张三","李四","王二麻子","小淘气")
 def test_baidu1(self, value):
       driver=self.driver
       url=self.url
       driver.get(url)
       time.sleep(1)
       driver.find_element_by_id("kw").clear()
       time.sleep(2)
       driver.find_element_by_id("kw").send_keys(value)
       time.sleep(1)
       driver.find_element_by_id("su").click()
       time.sleep(3)

 @data(["张天", "百度搜索"], ["生命在于运动", "我的小孩子"], ["可可脂巧克力", "我的好兄弟"])
 @unpack
 def test_baidu2(self,value1,value2):
     driver=self.driver
     url=self.url
     driver.get(url)
     driver.find_element_by_id("kw").clear()
     time.sleep(3)
     driver.find_element_by_id("kw").send_keys(value1)
     driver.find_element_by_id("su").click()
     time.sleep(3)

 if __name__ == '__main__':
         unittest.main()

二)使用ddt.file_data来修饰

1)选择读取普通的txt文件,需要写读取文件的代码

网页端产品自动化测试脚本,selenium,测试工具

import csv
import sys
import unittest

from ddt import ddt, data, unpack ,file_data
from selenium import webdriver
import time
@ddt
class TestBaiDu(unittest.TestCase):
 def setUp(self):
      self.driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
      self.url="http://www.baidu.com"
      self.driver.maximize_window()
 def tearDown(self):
     time.sleep(3)
     self.driver.quit()

 @data("张三","李四","王二麻子","小淘气")
 def test_baidu1(self, value):
       driver=self.driver
       url=self.url
       driver.get(url)
       time.sleep(1)
       driver.find_element_by_id("kw").clear()
       time.sleep(2)
       driver.find_element_by_id("kw").send_keys(value)
       time.sleep(1)
       driver.find_element_by_id("su").click()
       time.sleep(3)

 @data(["张天", "百度搜索"], ["生命在于运动", "我的小孩子"], ["可可脂巧克力", "我的好兄弟"])
 @unpack
 def test_baidu2(self,value1,value2):
     driver=self.driver
     url=self.url
     driver.get(url)
     driver.find_element_by_id("kw").clear()
     time.sleep(3)
     driver.find_element_by_id("kw").send_keys(value1)
     driver.find_element_by_id("su").click()
     time.sleep(3)

 def GetAll(filename):
     rows=[]
     path=sys.path[0]
     with open(path+'/data/'+filename,"rt") as f:
         readers=csv.reader(f,delimiter=',',quotechar='|')
         next(readers, None)
         for row in readers:
            temprows = []
            for i in row:
                temprows.append(i)
            rows.append(temprows)
            return rows


  #([张三,张三百度搜索],[李四,李四百度搜索],[王五,王五百度搜索])
 @data(*GetAll('test_baidu_data.txt'))
 @unpack
 def test_baidu3(self,value1,value2):
     driver = self.driver
     url = self.url
     driver.get(url)
     driver.find_element_by_id("kw").clear()
     time.sleep(3)
     driver.find_element_by_id("kw").send_keys(value1)
     driver.find_element_by_id("su").click()


 if __name__ == '__main__':
         unittest.main()

2)选择读取json格式的文件,不需要再写额外读取函数的代码文章来源地址https://www.toymoban.com/news/detail-811334.html

import csv
import sys
import unittest

from ddt import ddt, data, unpack ,file_data
from selenium import webdriver
import time
@ddt
class TestBaiDu(unittest.TestCase):
 def setUp(self):
      self.driver = webdriver.Edge("C://Users//18947//AppData//Local//Programs//Python//Python310//msedgedriver.exe")
      self.url="http://www.baidu.com"
      self.driver.maximize_window()
 def tearDown(self):
     time.sleep(3)
     self.driver.quit()
 @unittest.skip("skipping")
 @data("张三","李四","王二麻子","小淘气")
 def test_baidu1(self, value):
       driver=self.driver
       url=self.url
       driver.get(url)
       time.sleep(1)
       driver.find_element_by_id("kw").clear()
       time.sleep(2)
       driver.find_element_by_id("kw").send_keys(value)
       time.sleep(1)
       driver.find_element_by_id("su").click()
       time.sleep(3)

 @data(["张天", "百度搜索"], ["生命在于运动", "我的小孩子"], ["可可脂巧克力", "我的好兄弟"])
 @unpack
 @unittest.skip("skipping")
 def test_baidu2(self,value1,value2):
     driver=self.driver
     url=self.url
     driver.get(url)
     driver.find_element_by_id("kw").clear()
     time.sleep(3)
     driver.find_element_by_id("kw").send_keys(value1)
     driver.find_element_by_id("su").click()
     time.sleep(3)

 def GetAll(filename):
     rows=[]
     path=sys.path[0]
     with open(path+'/data/'+filename,"rt") as f:
         readers=csv.reader(f,delimiter=',',quotechar='|')
         next(readers, None)
         for row in readers:
            temprows = []
            for i in row:
                temprows.append(i)
            rows.append(temprows)
            return rows


  #([张三,张三百度搜索],[李四,李四百度搜索],[王五,王五百度搜索])
 @file_data('test_baidu_data.json')
 def test_baidu3(self,value):
     driver = self.driver
     url = self.url
     driver.get(url)
     driver.find_element_by_id("kw").clear()
     time.sleep(3)
     driver.find_element_by_id("kw").send_keys(value)
     driver.find_element_by_id("su").click()


 if __name__ == '__main__':
         unittest.main()

到了这里,关于selenium(7)----自动化测试脚本(python版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium IDE自动化测试脚本的实现

    Selenium IDE   是一个简单的录制回放工具,它可以录制你在浏览器上的操作,回放脚本时,它可以重现录制的动作,就好像你又操作了一遍一样。  selenium IDE是个浏览器插件,你需要在浏览器上安装该插件才能使用。 1.下载chrome或者firefox浏览器的插件。 下载路径:Selenium IDE

    2024年02月03日
    浏览(60)
  • 【自动化测试】Selenium IDE脚本编辑与操作

    之前,我们录制脚本时是录制鼠标和键盘的所有在浏览器的操作,那么脚本会出现多余的步骤,有时候我们需要手动填写脚本或修改脚本,所以我们有必要对selenium IDE脚本编辑与操作有所了解;(采用录制的方式很容易记录出多余的操作) Selenium IDE脚本编辑与操作 【了解】

    2024年02月15日
    浏览(52)
  • 用selenium IDE手工编写自动化测试脚本

    目录 一、打开selenium IDE插件  二、输入脚本 1.元素定位的验证  console验证Xpath定位 2.元素定位的验证   console验证css定位 selenium IDE属于玩具型自动化测试脚本编写工具,它简单、易上手,对于web自动化测试入门来说,是个非常不错的选择。 使用seleniium IDE插件录制脚本非常容

    2023年04月27日
    浏览(52)
  • 【Web自动化测试】(七)Selenium中执行JavaScript脚本

    相关文章链接: 【Web自动化测试】(一)Selenium介绍及安装部署说明 【Web自动化测试】(二)使用selenium编写测试用例 【Web自动化测试】(三)Selenium中控件定位方法 【Web自动化测试】(四)Selenium中WEB控件交互的方法 【Web自动化测试】(五)Selenium中的三种等待方式 【We

    2024年02月04日
    浏览(44)
  • Selenium IDE :安装、配置、录制 轻松生成UI自动化测试脚本

    Selenium IDE 是一个用于 Web 测试的集成开发环境。是 Chrome 和 Firefox 的插件,可以记录和回放与浏览器的交互过程。 可以从SeleniumIDE官方地址下载:https://www.selenium.dev/selenium-ide/ 打开浏览器,这里使用的是chrome浏览器。选择\\\"更多工具扩展程序\\\" **注意:**必须要打开“开发者模式

    2024年02月14日
    浏览(59)
  • 如何使用Selenium IDE浏览器插件轻松完成脚本录制,轻松搞定自动化测试!

    Selenium IDE可以用来调式Selenium脚本,支持将浏览器的Web网页操作导出为不同编程语言的脚本。 创建项目之后可以录制或回放已录制的网页操作情况,特别是对一些开发测试人员提供了相当大的便利。 目前,该Selenium IDE插件可以支持Edge/火狐以及谷歌浏览器的使用,其他浏览器

    2024年02月02日
    浏览(57)
  • Selenium+Python自动化脚本环境搭建的全过程

    * 本文仅介绍环境的搭建,不包含任何脚本编写教程。 先整体说一下需要用到工具 1、Python环境(包括pip) 2、谷歌浏览器(包括对应的WebDriver) 详细步骤: 1、下载安装包 Python Releases for Windows | Python.org   下载完成过后,打开进行安装, 先把下面的add path打钩 ,然后一直下

    2024年01月17日
    浏览(65)
  • python脚本——selenium自动化执行一些网页上的操作

    通过python的selenium模块,自动化执行一些网页上的重复的无聊的工作。 chromdriver下载地址

    2024年02月13日
    浏览(59)
  • Python Selenium UI自动化测试_python 自动化ui测试

    2.2 安装selenium pip install selenium pip install selenium==2.53.0 2.3 下载webdriver驱动 以chrome浏览器为例 查看chrome浏览器版本:在地址栏输入 chrome://version chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html 下载与浏览器版本对应的chrome driver 将下载好的chrome driver 解压,并放至到

    2024年04月14日
    浏览(75)
  • Python自动化测试之登录脚本

    前提已经安装好python、pycharm,配置了对应的环境变量。 文件–设置—项目:script----python解释器----+selenium 以谷歌浏览器为例 下载地址:https://chromedriver.chromium.org/downloads (1)先查看谷歌浏览器版本; (2)下载类似版本号的.zip,解压到pyhton环境目录下 (也可以下载到pycharm下

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包