from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from pip._vendor.distlib.locators import Page
from selenium.webdriver.support.ui import Select#导入下拉框函数
import unittest

class Page(object):
    login_url = 'http://qf-uatqapp-w2/ProductApplication/Application'
    def __init__(self, selenium_driver, base_url=login_url):
        self.base_url = base_url
        self.driver = selenium_driver
        self.timeout = 30
        self.driver.maximize_window()
    def on_page(self):
        return self.driver.current_url == (self.base_url + self.url)
    def _open(self, url):
        url=self.base_url
        self.driver.get(url)
        self.driver.maximize_window()
        #assert self.on_page(), 'Did not land on %s' %url
    def open(self):
        self._open(self.url)
    def find_element(self, *loc):
        return self.driver.find_element(*loc)
    
    def switch_frame(self, loc):
        return self.driver.switch_to_frame()
    
    
class LoginPage(Page):
    url = '/'
    username_loc = (By.ID, "Account")
    password_loc = (By.ID, "Pwd")
    submit_loc = (By.ID,"Log_Submit")
    
    def type_username(self, username):
        self.find_element(*self.username_loc).send_keys(username)
    def type_password(self,password):
        self.find_element(*self.password_loc).send_keys(password)
    def submit(self):
        self.find_element(*self.submit_loc).click()
        
class ProductPage(Page): 
    customername_loc = (By.ID, "customerName") 
    customerID_loc = (By.ID,"customerIDCard")  
    applyCity_loc = (By.ID,"applyCity")
   
   # productCode_loc = (By.ID,"//option[@value='productCodesyd-6-24']")
   # productCode_value = (By.XPATH,"//option[@value='BYQSF0000']")
   # platform_loc = (By.ID,"platform")
   #platform_value = (By.XPATH,"//option[@value='BYQSF0000']")
    
    def type_customername(self, customername):
        self.find_element(*self.customername_loc).send_keys(customername)
    def type_customerID(self, customerId):
        self.find_element(*self.customerID_loc).send_keys(customerId)    
    def type_applyCity(self, applyCityvalue):
        Select(self.find_element(*self.applyCity_loc)).select_by_value(applyCityvalue)#下拉框函数
        
        
def test_user_login(driver, username, password):
    page = LoginPage(driver)
    page.open()
    page.type_username(username)
    page.type_password(password)
    page.submit()
   
    
def test_apply_product(driver,customername, customerID, applyCityvalue):
    page1 = ProductPage(driver)
    page1.type_customername(customername)
    page1.type_customerID(customerID)
    page1.type_applyCity(applyCityvalue)  
    
    
    
    
def main():
    
    driver = webdriver.Chrome()
    username = 'jiahua'
    password = 'Quarkhj05'
    customername = u'huajia'
    customerId = '310104198408020057'
    applyCityvalue = '025,025'
    test_user_login(driver,username,password)
    driver.implicitly_wait(30)
    test_apply_product(driver,customername, customerId, applyCityvalue)

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

原文转自http://www.cnblogs.com/jerryhua/p/5794868.html

selenium-pageobject设计模式的更多相关文章

  1. PageObject设计模式,在selenium自动化测试中的运用

    PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 2. web测试时,建议 ...

  2. selenium的PageObject设计模式

    PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 2. web测试时,建议 ...

  3. PageObject设计模式 在selenium 自动化测试里面的应用

    PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 2. web测试时,建议 ...

  4. 聊聊UI自动化的PageObject设计模式

    当我们开发UI自动化测试用例时,需要引用页面中的元素(数据)才能够进行点击(动作)并显示出页面内容.如果我们开发的用例是直接对HTML元素进行操作,则这样的用例无法"应对"页面中U ...

  5. Page-Object设计模式

    自动化脚本初写之际一定是只求完成功能测试,页面by.id.by.name.by.xpath满篇飞.业务逻辑代码重复率也是越来越高.慢慢的写着写着开始重构,开始封装一些方法.代码量好一些的人会在代码开始 ...

  6. 记我的第二次自动化尝试——selenium+pageobject+pagefactory实现自动化下单、退款、撤销回归测试

    需求: 系统需要做下单.退款.撤销的回归测试,有下单页面,所以就想到用selenium做WEB UI 自动化 项目目录结构: common包上放通用的工具类方法和浏览器操作方法 pageobject包 ...

  7. Python+Selenium+PageObject

    一.安装page_objects测试库 二.目录介绍 1.pages包:用于各界面元素定位,如BaseLoginPage.py 2.testcases包:用于编写各功能测试用例,如Login.py 3 ...

  8. selenium +python之Page Obiect设计模式

    PageObject是selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现对界面交互细节的封装,这样可以使测试案例更关注于业务而非界面细节,从而提高测试案例的可读性. 1.认识Page ...

  9. selenium自动化测试框架之PO设计模式

    面向对象的特性:封装.继承.多态.在自动化中一样适用,Selenium自动化测试中有一个名字常常被提及PageObject(思想与面向对象的特性相同),通过PO模式可以大大提高测试用例的维护效率. 传 ...

  10. [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建

    本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建.<Selenium For C#>系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读 ...

随机推荐

  1. 预加载 img 的方式。

    原生方式: var img = new Image(); img.onerror = function() { alert('img error'); }; img.onload = function ...

  2. JS里面利用random()实现随机颜色更换

    首先你需要一个div <div id="box"></div> 然后给这个div加入CSS属性 #box{width:500px;height:500px; ...

  3. getGLES1ExtensionString: Could not find GLES 1.x config!

    编辑模拟器中  Emulated performance 中不选  auto 和  Hardware - GLES 2.0,选择Software-GLES2.0.解决问题

  4. 2.struts2访问web资源(在struts2中获取session,request等等)

    什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ...

  5. freemarker

    一.下载freemarker的jar包,到maven仓库下载 二.引入jar包,参考freemarker的手册写代码 1.Test.ftlh <!DOCTYPE html> <htm ...

  6. Android_Fragment(碎片)知识点讲解

    今天我们来了解下Android 中的fragment(碎片)这个东西. Fragment 从英文翻译而言是碎片,片段的意思.那么这个东西是什么,在Android 中有什么用呢? 一.概念 Fragme ...

  7. Windows服务二:测试新建的服务、调试Windows服务

    一.测试Windows服务 为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点.像其他应用程序一样,Windows服务也是在Program.cs的Main ...

  8. range()和xrange()区别

    版本:Python2.7 1.先看帮助说明 (1)range()返回一个递增或递减的数字列表,列表的元素由三个参数决定       start 表示列表开始的值,默认为0       stop 表示列 ...

  9. Ping of Death

    [Ping of Death] The ping of death attack, or PoD, can cripple a network based on a flaw in the TCP/I ...

  10. IE6 7下常见CSS兼容性处理

    以下是一些比较常见的IE6 7下的兼容性问题. 在当下这个时代,其实我们几乎可以不用再去针对IE6做兼容性的处理,除非你的公司还是诡异的要求你兼容到IE6.但是了解一些常见的兼容性问题还是可以帮助我们 ...