Functional testing  - python selenium django - Source Code :

from selenium import webdriver
from selenium.webdriver.common.by import By

from django.test import LiveServerTestCase

class Browser():  #(Run more than one testcases on one browser)
  browser = None
  def __new__(cls):
    Browser.browser = Browser.browser or webdriver.Firefox()
    return Browser.browser

class Base(LiveServerTestCase):
  def setUp(self):
    self.browser = Browser()
    self.browser.maximize_window()
    self.browser.implicitly_wait(10)
    self.flag_close_browser = None
    self.browser.get(self.live_server_url)

  def tearDown(self):
    if self.flag_close_browser == 1:
      self.browser.quit()

  def login(self, user_name, password):
    self.find_element(By.NAME, 'user_name').send_keys(user_name)
    self.find_element(By.NAME, 'pwd').send_keys(password)
    self.find_element(By.TAG_NAME, 'button').submit()
  

  def find_element(self, find_type, element):
    obj = self.browser.find_element(find_type, element)
    if obj.get_attribute('type') == 'text' and obj.is_displayed():
      obj.clear()
    return obj

  def find_elements(self, find_type, element):
    obj_list = self.browser.find_elements(find_type, element)
    for obj in obj_list:
      if obj.get_attribute('type') == 'text' and obj.is_displayed():
        obj.clear()
    return obj_list

  

Functional testing - python, selenium and django的更多相关文章

  1. Unit Testing, Integration Testing and Functional Testing

    转载自:https://codeutopia.net/blog/2015/04/11/what-are-unit-testing-integration-testing-and-functional- ...

  2. 使用python selenium进行自动化functional test

    Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...

  3. Python自动化之django的ORM操作——Python源码

    """ The main QuerySet implementation. This provides the public API for the ORM. " ...

  4. python+Selenium 环境搭建

    一.下载相关软件 1.python http://python.org/getit/ 2.setuptools http://pypi.python.org/pypi/setuptools 3.pip ...

  5. 《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,呵!这个框架有点意思啊

    1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到bas ...

  6. Python攻关之Django(一)

    课程简介: Django流程介绍 Django url Django view Django models Django template Django form Django admin (后台数据 ...

  7. python框架之django

    python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...

  8. Python Virtualenv运行Django环境配置

    系统: RHEL6.5 版本说明: Python-3.5.0 Django-1.10.4 virtualenv:为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各 ...

  9. 【Python实战】Django建站笔记

    前一段时间,用Django搭建一个报表分析的网站:借此正好整理一下笔记. 1. 安装 python有包管理工具pip,直接cd Python27/Scripts,输入 pip install djan ...

随机推荐

  1. 例子:Background Agent Sample

    通过本例程学习: 后台代理Agent的使用方法 定期代理(PeriodicTask)来说,限制了: 有一些API不能使用,并不是说你不调用就可以了,只要你在同一个程序集里使用了这些API,就不会通过验 ...

  2. jQueryUI 之控件们

    总结:总的来说,这些控件可以在官网找到列子, 部分ui效果不如意的,可根据jQueryUI上添加的类选择器等,进行再加工 <!DOCTYPE html> <html> < ...

  3. Linux 进程退出后自动启动

    /********************************************************************** * Linux 进程退出后自动启动 * 说明: * 在系 ...

  4. Linux Kernel Version Numbering

    Because there are numerous revisions and releases of the Linux kernel and new ones are developed at ...

  5. isinstance(),issubclass()

    isinstance(object,classinfo) 返回True,如果object是classinfo或者classinfo子class的实例. 如果classinfo是包含type和class ...

  6. Fortran学习心得

    编译调试: 服务器上所用的编译器可以编译.F90的文件,同时,经过测试已经知道有两款编译器:gfortran和ifort. 另外,查看编译器的bash命令是:gfortran -v. 编程算法思想与C ...

  7. JSBinding / About 2048 sample

    2048 Source 2048 source code is here: https://github.com/gabrielecirulli/2048 Play here!http://gabri ...

  8. redis 集群环境搭建-redis集群管理

    集群架构 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redi ...

  9. ECShop函数列表大全

    lib_time.php gmtime() P: 获得当前格林威治时间的时间戳 /$0 server_timezone() P: 获得服务器的时区 /$0 local_mktime(hour=NULL ...

  10. ora-01445:无法从不带保留关键字的表的连接视图中选择ROWID或采样

    系统要创建一个物化试图,用到很多张表,执行的时候报错:   ora-01445:无法从不带保留关键字的表的连接视图中选择ROWID或采样   网上搜了下,有多种原因和解决方法,最终我选择先尝试一下修改 ...