基于selenium的pyse自动化测试框架

简介:

WebUI automation testing framework based on Selenium

介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比selenium提供的方法操作更简洁。

 

起因:

  python + selenium 自动化测试写久了发现selenium(webdriver)提供原生的方法并简便,于是,产生了二次封装的想法。想不到太炫酷的名字,于是各取了两个单词的前两个字母-- pyse。

 

特点:

  • 所有方法只提供xpath定位,webdriver提供了8种定位方法(id\name\class name\tag name\link text\partial link text\xpath\css selector)但xpath一定程度可以替代id\name\class name\tag name 等方法,本框架所提供的click_text()方法可以替代link text方法,所以只用xpath定位对不影响框架对元素的定位能力,又保证了定位方法的一致性。
  • 本框架只是对selenium(webdriver)原方法的简单封装,精简为30个方法,经过我的自动实践,这些方法完全够胜任于我们的自动化工作。
  • 集成了HTMLTestRunner 测试报告,使生成报告变得很简单。

 

安装及前提条件:

 

例子: 请查看demo目录

先看一下百度搜索的例子:

baidu.py

复制代码
#coding=utf-8
from pyse import Pyse
from time import sleep

driver = Pyse("chrome")

driver.open("https://ww.baidu.com")
driver.type("//*[@id='kw']",u"pyse自动化测试")
driver.click("//*[@id='su']")
sleep(2)
driver.quit()
复制代码

 

再看一个page object 设计模式的例子

page_object_case.py

复制代码
#coding=utf-8
from pyse import Pyse
from time import sleep

class Page(object):
    '''
    基本类,用于所页面的继承
    '''
    login_url = 'http://www.126.com'

    def __init__(self, selenium_driver, base_url=login_url, parent=None):
        self.base_url = base_url
        self.driver = selenium_driver
        self.timeout = 30
        self.parent = parent
    
    def _iopen(self,url):
        url = self.base_url + url
        self.driver.open(url)
        assert self.on_page(),'Did not land on %s' % url

    def iopen(self):
        self._iopen(self.url)

    def on_page(self):
        return self.driver.get_url() == (self.base_url + self.url)

class LoginPage(Page):
    '''
    126邮箱登录页面模型
    '''
    url = '/'
    
    def type_username(self,username):
        self.driver.type("//*[@id='idInput']",username)
    
    def type_password(self,password):
        self.driver.type("//*[@id='pwdInput']",password)
    
    def submit(self):
        self.driver.click("//*[@id='loginBtn']")


def test_user_login(driver, username, password):
    """
    测试获取的用户名密码 是否可以登录
    """
    login_page = LoginPage(driver)
    login_page.iopen()
    login_page.type_username(username)
    login_page.type_password(password)
    login_page.submit()


def main():
    try:
        driver = Pyse("chrome")
        username = 'username'
        password = 'password'
        test_user_login(driver, username, password)
        sleep(3)
        text = driver.get_text("//span[@id='spnUid']")
        assert(text == 'username@126.com'),u"用户名称不匹配,登录失败!"
    finally:
        # 关闭浏览器窗口
        driver.close()

if __name__ == '__main__':
    main()
复制代码

 

再看一个使用unittest单元测试框架的例子。

unittest_case.py

复制代码
#coding=utf-8
from pyse import Pyse,TestRunner
from time import sleep
import unittest

class baiduTest(unittest.TestCase):

    def setUp(self):
        self.driver = Pyse("chrome")
        self.driver.wait(10)
        self.base_url = "http://www.baidu.com"

    def test_case(self):
        driver = self.driver
        driver.open(self.base_url)
        driver.click_text("设置")
        driver.click_text("搜索设置")
        sleep(2)
        driver.click("//a[@class='prefpanelgo']")
        sleep(1)
        driver.accept_alert()

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    TestRunner(r".\demo").run()
复制代码

  调用TestRunner()测试类时需要指定一个测试用例的目录,如:E:\mytestpro\test_case 。然后,调用的它的run()方法来运行测试用例。

  匹配测试用例文件的规则是*_case.py 。所以,测试文件的命名一定要为 aa_case.py ,a12_case.py等。

  它会自动在test_case目录下生成report目录并在其下面生成测试报告。如下:

 

项目地址:https://github.com/defnngj/pyse

目录
相关文章
|
11天前
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
41 0
|
5天前
|
监控 测试技术 API
深入理解自动化测试框架Selenium的设计与实现
【4月更文挑战第14天】在软件开发过程中,自动化测试是确保代码质量、减少人工重复劳动的关键步骤。Selenium作为一款广泛使用的自动化测试工具,提供了对多种浏览器和操作系统的支持。本文将探讨Selenium的核心组件及其架构设计,分析其如何通过WebDriver与浏览器交互,以及它如何支持多种编程语言进行脚本编写。同时,我们还将讨论Selenium Grid的作用以及它如何实现并行测试,以缩短测试周期并提高测试效率。
168 58
|
5天前
|
Web App开发 测试技术 网络安全
|
6天前
|
Web App开发 前端开发 Java
框架分析(11)-测试框架
框架分析(11)-测试框架
|
8天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)
【4月更文挑战第9天】本文介绍了CSS定位方式的使用,包括它的优势和8种常用的定位方法。CSS定位相比XPath定位更快、更稳定。文章通过示例详细讲解了如何使用CSS定位元素,包括通过id、name、class name、tag name、link text、partial link text以及XPath进行定位。还提供了Java代码示例来演示如何在自动化测试中使用这些定位方法。
37 1
|
1月前
|
JavaScript 前端开发 测试技术
Python Selenium基本用法
Python Selenium基本用法
29 2
|
2月前
|
Web App开发 数据采集 前端开发
基于Python的Selenium详解:从入门到实践
基于Python的Selenium详解:从入门到实践
101 0
|
3月前
|
Web App开发 Python
Python使用selenium的Chrome下载文件报错解决
Python使用selenium的Chrome下载文件报错解决
46 0
|
3月前
|
Web App开发 Python
python+selenium+Chrome 监测文件是否下载完毕
python+selenium+Chrome 监测文件是否下载完毕
49 0
|
29天前
|
Web App开发 前端开发 JavaScript
Python Selenium是一个强大的自动化测试工具
Python Selenium是一个强大的自动化测试工具