`
angelguo
  • 浏览: 121480 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于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目录并在其下面生成测试报告。如下:

 

支持的浏览器及驱动:

Firefox:

driver = Pyse("firefox")  

或:

driver = Pyse("ff")

Chrome:

driver = Pyse("chrome")  

IE:

driver = Pyse("internet explorer")

或:

driver = Pyse("ie")

Opera:

driver = Pyse("opera")

PhantomJS:

driver = Pyse("phantomjs")  #需要将phantomjs驱动程序phantomjs.exe放入脚本程序根目录下

Edge:

driver = Pyse("edge")

 

geckodriver(Firefox):https://github.com/mozilla/geckodriver/releases

Chromedriver(Chrome):https://sites.google.com/a/chromium.org/chromedriver/home

IEDriverServer(IE):http://selenium-release.storage.googleapis.com/index.html

operadriver(Opera):https://github.com/operasoftware/operachromiumdriver/releases

phantomjs(PhantomJS):http://phantomjs.org

MicrosoftWebDriver(Edge):https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver

==========================================================

元素定位:

pyse支持多种定位方式,id、name、class、link text、xpath和css。把定位方法与定位内容一体,写起更加简洁。

<form id="form" class="fm" action="/s" name="f">
  <span class="bg s_ipt_wr quickdelete-wrap">
    <input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

==========================================================

id定位:

driver.type("id=>kw", "pyse")

==========================================================

class定位:

driver.type("class=>s_ipt", "pyse")

==========================================================

name定位:

driver.type("name=>wd", "pyse")

==========================================================

link text定位: 点击百度首页上的"新闻"链接。

driver.click_text(u"link_text=>新闻")

==========================================================

xpath定位:

driver.type("xpath=>//*[@class='s_ipt']","pyse")
driver.type("xpath=>//*[@id='kw']","pyse")

==========================================================

css定位:

driver.type("css=>.s_ipt","pyse")
driver.type("css=>#su","pyse")

==========================================================

css选择器参考手册: http://www.w3school.com.cn/cssref/css_selectors.asp nose基本用法:http://pythontesting.net/framework/nose/nose-introduction/

 

 

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

分享到:
评论

相关推荐

    Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码

    Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码Python 通过Selenium浏览器自动化测试框架获取HTML代码中的可用数据 Python源码Python 通过Selenium浏览器自动化测试框架获取HTML代码...

    基于Selenium的自动化测试框架设计与实现.pdf

    ### 基于Selenium的自动化测试框架设计与实现 #### 一、引言与背景 随着信息技术的迅速发展,Web应用程序变得日益普遍且复杂。这些应用不仅承载着复杂的业务逻辑,还涉及到庞大的数据处理任务。为了确保这些Web...

    Selenium2自动化测试实战 基于Python语言

    《Selenium2自动化测试实战——基于Python语言》是一本针对软件测试工程师,尤其是对Web应用程序自动化测试感兴趣的读者的专业书籍。作者虫师在2016年10月编写了这本书,尽管时间已过去数年,但Selenium作为自动化...

    基于selenium webdriver 自动化测试框架

    这是一个WebUI自动化测试框架,由webdriver中文社区创办人土豆(本人技术笔名)所创建,该web自动化测试框架是用java语言编写的,基于selenium webdriver 的开源自动化测试框架,该框架结合了testng,selenium,webdriver...

    SELENIUM 2 自动化测试实战 基于PYTHON语言

    基于Python的Selenium测试框架,因其简洁易懂的语法和丰富的库支持,成为了自动化测试工程师的首选语言之一。 1. **Python 语言基础**:在使用Selenium进行自动化测试之前,熟悉Python的基本语法、数据类型、控制...

    Selenium 2自动化测试实战 基于Python语言

    Selenium 2自动化测试实战 基于Python语言 企业批量购书 分享 关注商品举报 Selenium 2自动化测试实战 基于Python语言 这不仅是一本Selenium2自动化测试书,同时还是一本实用的Python基础编程书

    selenium自动化测试实践——基于python语言

    本文介绍的是一本关于Selenium自动化测试的实践指南,它以Python语言为编程基础,提供了一系列自动化测试的实践技巧和实例。以下知识点将详细介绍书中所涉及的关键内容。 首先,了解Selenium。Selenium是一个用于...

    基于Selenium UI 自动化测试框架(基于 python 3+selenium)资料齐全+详细文档+高分项目+源码.zip

    基于Selenium UI 自动化测试框架(基于 python 3+selenium)资料齐全+详细文档+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试...

    基于Selenium 2的自动化测试 从入门到精通

    基于Selenium 2的自动化测试 从入门到精通PDF电子书下载 带书

    Python-SeleniumUI自动化测试框架基于python

    **Python-Selenium UI自动化测试框架基于Python** 在软件测试领域,UI自动化测试是提高测试效率、减少人工干预的重要手段。Python结合Selenium库构建的自动化测试框架,为开发者提供了高效且灵活的解决方案。本框架...

    基于Selenium Python的自动化测试框架的设计与实现.doc

    "基于Selenium Python的自动化测试框架的设计与实现" 本文主要介绍了基于Selenium Python的自动化测试框架的设计与实现,旨在解决传统软件测试技术和方法不适用于当前Web系统测试的问题。下面是从文件中提取的相关...

    基于 python 的 selenium UI 自动化测试框架,采用 Page Object 设计模式进行二次开发.zip

    基于 python 的 selenium UI 自动化测试框架,采用 Page Object 设计模式进行二次开发.zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学...

    SELENIUM2自动化测试实战基于PYTHON语言

    资源名称:SELENIUM 2 自动化测试实战 基于PYTHON语言内容简介:《Selenium 2自动化测试实战——基于Python语言》共分 14 章。第 1 章是自动化测试相关基础知识的介绍;第 2 章到第 10 章是《Selenium 2自动化测试...

    webUI自动化测试框架(Python+selenium)

    【Python+Selenium构建WebUI自动化测试框架】 在软件开发过程中,测试是不可或缺的一环,而自动化测试能够极大地提高测试效率,降低人工出错的概率。本文将深入探讨如何使用Python结合Selenium库构建一个WebUI自动...

    基于Python+Selenium的web自动化测试框架的设计与实现.doc

    "基于Python+Selenium的web自动化测试框架的设计与实现" 以下是从给定文件中生成的相关知识点: 1. 软件测试的重要性 软件测试的重要性日益突出,传统的手工测试方式存在许多弊端,如大量的重复劳动、疲劳、错误...

    基于Selenium的WebUI自动化测试框架pyse.zip

    本框架只是对 selenium( webdriver ) 原生方法进行了简单的封装,精简为大约 30 个方法,这些方法基本能够胜任于我们的web自动化测试。基于 unittest 单元测试框架,所以测试文件与测试方法遵循unittest开发。自动...

    基于Selenium的WebUI自动化测试框架(Java+Maven+Selenium+TestNG+Jedis+Jenkins)

    使用Java+Maven+Selenium+TestNG+Jedis+Jenkins搭建的WebUI自动化测试框架,资源的大体介绍如下链接http://note.youdao.com/noteshare?id=dc564343fd126f497074f6d7560c9f5e&sub=387EB3B1BAC945CEA71A5BDBC6484473

    selenium2 python自动化测试 PDF学习

    Selenium,作为一个非常流行的自动化测试框架,支持多种浏览器和操作系统,可以用于自动化Web应用程序的测试。在Python环境中,Selenium与Python结合,可以快速实现Web自动化测试。以下知识点将围绕“Selenium2 ...

    基于Python的Selenium自动化测试在毕业设计中的应用.pdf

    本文主要探讨了基于Python语言和Selenium自动化测试工具在毕业设计中的应用,并分析了引入自动化测试的意义以及如何搭建自动化测试环境。 一、自动化测试的概念与重要性 自动化测试是通过预先编写的测试脚本,利用...

Global site tag (gtag.js) - Google Analytics