自动化selenium脚本开发(示例1:用户管理)

import time

from lib.pyse import Pyse

‘‘‘# PageObject思想:将一个页面抽象成一个类,将这个页面上能够操作的元素,抽象成一个个的方法# 好处:已封装好的模块,要修改的时候,就可以定位到某一块代码的地方‘‘‘#方法和思路,以及需要注意的点:#1、当存在很多个类的时候,按照顺序从上到下依次继承,b继承a,c继承b,d集成c...#2、一个页面是一个类,每个页面里面的任意一个操作都是一个方法#3、每个页面结束之后,都要进行一个校验,看页面跳转之后页面的某个元素是否存在,比如登录成功之后,退出按钮是否存在#4、如果某个元素定位不到的时候,就写全定位地址tmp=‘css=>#horizontal>div>div>ul>li[id="00000000000000000000000000000000"]‘,不要只写li[id="00000000000000000000000000000000"]#5、调试过程中,当不知道为什么报错的时候,如何确定是不是定位元素的问题:    # print(self.pyse.wait_and_save_exception(tmp1,‘hehehe‘)),看打印的是true还是false,即可以判断有没有定位错误

#思路:####1、page.py:用来存放页面的类和一个个操作的方法#1、公用类里面放初始函数,用来选择浏览器#2、公用类里面的open函数,用来放访问地址url——初始函数和open被test_zbox.py用例脚本的setUpClass调用#3、公用类里面的quit函数,用来访问结束后退出——被test_zbox.py用例脚本的tearDownClass调用

###2、test_zbox.py:用来放测试用例,比如登录用例,提bug用例###3、lib下放一个path.py:专门来存放基本的路径,比如用例路径、报告路径、错误图片路径###4、run.py就是main.py,专门用来执行所有的用例,以及运行之后的结果存在测试报告当中

class BasePage(object):     #放一些公用方法的类    def __init__(self):        self.pyse=Pyse(‘chrome‘)        #pyse中默认是firefox,所以这里需要定义chrome

    def open(self):     #打开url        self.pyse.open(‘http://hf.zhuofansoft.com:8301/sxgov_mysql/‘)

    def quit(self):     #使用完后退出url页面        self.pyse.quit()

class LoginPage(BasePage):  #页面的类    def sendUsername(self):        tmp=‘css=>#loginCode‘        self.pyse.type(tmp,‘admin‘)

    def sendPasswd(self):        tmp = "css=>#loginPassword"        self.pyse.type(tmp,‘123‘)

    def clickLogin(self):        tmp = ‘css=>#submitButton‘        self.pyse.click(tmp)

    def checkLogin(self,name):      #登录页面校验的方法:看登录成功之后的页面的某个元素是否能定位到,比如只有登录成功之后才有退出按钮        tmp0=‘css=>[src="systemIndex.do"]‘        self.pyse.switch_to_frame(tmp0)        tmp=‘css=>a[lay-href="getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]‘        return self.pyse.wait_and_save_exception(tmp,name)     #pyse里面这个就是正确时返回true,失败时截图操作

class JczcPage(LoginPage):    def clickJczc(self):        tmp = ‘css=>a[lay-href="getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]‘        self.pyse.click(tmp)

class YhglPage(JczcPage):    def Yhclick(self):        self.pyse.switch_to_frame_out()        tmp0=‘css=>[src="getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]‘        self.pyse.switch_to_frame(tmp0)        tmp=‘css=>#menu_list>ul>li[id="402881f95b4b1209015b4c14115c017d"]‘        # print(self.pyse.wait_and_save_exception(tmp,‘用户管理‘))        self.pyse.click(tmp)

    def zengjia(self):        tmp0=‘css=>[src="sys/user/list.do"]‘        self.pyse.switch_to_frame(tmp0)        tmp1=‘css=>a[class="btn btn-primary"]‘        self.pyse.click(tmp1)

class Yhinfo(YhglPage):      #填bug信息页面的类    def name(self):   #所属模块,从父级指向下级a,父级定位唯一,在tmp12中会唯一获取到        self.pyse.switch_to_frame_out()        tmp0=‘css=>#_DialogFrame_0‘        self.pyse.switch_to_frame(tmp0)        tmp1=‘css=>#name‘        self.pyse.type(tmp1,‘张三6‘)

    def birthdate(self):        tmp0=‘css=>#birthdate‘        self.pyse.click(tmp0)        self.pyse.switch_to_frame_out()        tmp1=‘css=>[hidefocus="true"]‘        self.pyse.switch_to_frame(tmp1)        tmp2=‘css=>tr>td[class="Wselday"]‘        self.pyse.click(tmp2)

    def sex(self):        self.pyse.switch_to_frame_out()        tmp0=‘css=>#_DialogFrame_0‘        self.pyse.switch_to_frame(tmp0)        tmp1=‘css=>.sexual>div>ins[class="iCheck-helper"]‘        self.pyse.click(tmp1)

    def cardNo(self):        tmp=‘css=>#cardNo‘        self.pyse.type(tmp,‘456789199911112222‘)

    def mobile(self):        tmp=‘css=>#mobile‘        self.pyse.type(tmp,‘15812345678‘)

    def telphone(self):        tmp=‘css=>#telphone‘        self.pyse.type(tmp,‘021-1234567‘)

    def position(self):   #领导        tmp=‘css=>#position‘        self.pyse.select_by_value(tmp,‘402882285f6ff04e015f700f4e1b0012‘)

    def email(self):        tmp=‘css=>#email‘        self.pyse.type(tmp,‘[email protected]‘)

    def sort(self):        tmp=‘css=>#sort‘        self.pyse.type(tmp,‘1‘)

    def type(self):        tmp=‘css=>#type‘        self.pyse.select_by_value(tmp,‘4028800b58cc8b450158ccd500ce0004‘)

    def districtName(self):        tmp=‘css=>#districtName‘        self.pyse.click(tmp)        tmp1=‘css=>.input-group>div>ul>ul>li>a[id="districtTree_1_a"]‘        self.pyse.click(tmp1)

    def organName(self):        tmp1=‘css=>td[class="table_text  form-group"]>div>input[id="organName"]‘        self.pyse.click(tmp1)        tmp2=‘css=>td[class="table_text  form-group"]>div>div>ul>ul>li>a[id="sysOrganTree_11_a"]‘        self.pyse.click(tmp2)

    def shuli(self):        tmp=‘css=>.table_text>div[class="iradio_square-green"]>ins[class="iCheck-helper"]‘        # tmp=‘css=>#manage>form>div>table>tbody>tr>td>div[class="iradio_square-green"]>ins[class="iCheck-helper"]‘        # print(self.pyse.wait_and_save_exception(tmp,‘梳理没有定位到‘))        self.pyse.click(tmp)

    def square_green(self):        tmp=‘css=>tr[class="work-list"]>td[class="table_text"]>ul>span>div>ins[class="iCheck-helper"]‘        self.pyse.click(tmp)

    def qdgl(self):        # tmp=‘css=>div[class="sexual"]>label [class]>div[class="icheckbox_square-green"]>input[value="2c98cbab6ae66587016ae73b51f2002f"]‘        # tmp=‘xpath=>//tbody[@id="tbody1"]/tr/td/div/label/div/input[@value="2c98cbab6ae0f3a6016ae11487c60000"]‘        # tmp=‘css=>tr[id="workList"]>td>table>tbody>tr>td>div>label>div>input[value="2c98cbab6ae0f3a6016ae11487c60000"]‘        # tmp=‘css=>input[value="2c98cbab6ae66587016ae73b51f2002f"]‘        # tmp=‘css=>table[class="table"]>tbody>tr>td>div>label>div>ins[class="iCheck-helper"]‘        # tmp=‘xpath=>//input[@name="roleOid4028829d5a7ea57e015a7eaa9da10001" and @class="minimal" and @value="2c98cbab6ae0f3a6016ae11487c60000"]‘        # tmp=‘xpath=>//tbody[@id="tbody1"]/tr[1]/td[3]/div/label[1]/div/input[@name="roleOid4028829d5a7ea57e015a7eaa9da10001"]‘        tmp=‘xpath=>//tbody[@id="tbody1"]/tr[1]/td[3]/div/label[1]/div‘        # print(self.pyse.wait_and_save_exception(tmp,‘清单没有匹配‘))        self.pyse.click(tmp)

    def jczc(self):        tmp=‘xpath=>//tbody[@id="tbody1"]/tr[2]/td[3]/div/label[1]/div‘        # print(self.pyse.wait_and_save_exception(tmp,‘基础匹配‘))        self.pyse.click(tmp)

    def account(self):        tmp=‘css=>#account‘        self.pyse.type(tmp,‘zs1234566‘)

    def password(self):        tmp=‘css=>#password‘        self.pyse.clear(tmp)        self.pyse.type(tmp,‘zs1234566‘)

    def save(self):        tmp=‘css=>div>a[class="layui-layer-btn2"]‘        self.pyse.click(tmp)

    def sure(self):        self.pyse.switch_to_frame_out()        tmp=‘css=>#_ButtonOK_1‘        self.pyse.click(tmp)

    def checkYhinfo(self,name):        # self.pyse.switch_to_frame_out()        tmp0 = ‘css=>[src="getMenuList.do?permission=402881f95b4b1209015b4c0d15080157"]‘        self.pyse.switch_to_frame(tmp0)        tmp = ‘css=>#menu_list>ul>li[id="402881f95b4b1209015b4c14115c017d"]‘        return self.pyse.wait_and_save_exception(tmp,name)

class Page(Yhinfo):    pass

if __name__==‘__main__‘:    page=Page()    page.open()    page.sendUsername()    page.sendPasswd()    page.clickLogin()    print(page.checkLogin(‘登录失败了‘))

    page.clickJczc()    page.Yhclick()    page.zengjia()    page.name()    page.birthdate()    page.sex()    page.cardNo()    page.mobile()    page.telphone()    page.position()    page.email()    page.sort()    page.type()    page.districtName()    page.organName()    page.shuli()    page.square_green()    page.qdgl()    page.jczc()    page.account()    page.password()    page.save()    page.sure()    print(page.checkYhinfo(‘保存失败了‘))

原文地址:https://www.cnblogs.com/zhaoxueying/p/11412127.html

时间: 2024-11-09 03:55:12

自动化selenium脚本开发(示例1:用户管理)的相关文章

自动化selenium脚本开发(示例2:区划管理)

from lib.pyse import Pyse'''pageobject实际上就是 将一个页面 抽象成一个类 页面上可操作的元素 抽象成方法 ''' #登陆页面class BasePage(object): def __init__(self): self.pyse = Pyse('chrome') def open(self): self.pyse.open('http://43.254.154.254:12333/sxgl') #项目地址 def quit(self): self.pys

自动化selenium脚本开发(示例2:目录清单审核、发布、认领、认领审核)

from lib.pyse import Pyse'''pageobject实际上就是 将一个页面 抽象成一个类 页面上可操作的元素 抽象成方法 ''' #登陆页面class BasePage(object): def __init__(self): self.pyse = Pyse('chrome') def open(self): self.pyse.open('http://43.254.154.254:12333/sxgl') #项目地址 def quit(self): self.pys

mysql自动化安装脚本开发

最近正好有空闲时间进行mysql自动安装脚本开发,预计先用shell实现一个版本,后续继续用python改造开发,最终实现python版本的开发. 2019-3-18,完成shell脚本的mysql自动化安装脚本的开发与调试.信息如下:mysql版本为5.6.43,通过shell函数的方式实现数据安装的3个阶段,再加上一个全局阶段,共4个阶段 1.全局阶段通过if [ $(id -u) != "0" ]判断当前操作用户是否为root,如不等0,则提示用户使用root用户执行该脚本,实现

JMeter学习(二十九)自动化badboy脚本开发技术

一般人用badboy都是使用它的录制功能,其它badboy还是一款自动化的工具,它可以实现检查点.参数化.迭代.并发.报告.断点等功能.本文就这些功能简单介绍下. 环境准备: 下载地址:http://www.badboy.com.au/,下载后安装即可. 工具:BadboyInstaller-2.2.exe 一.检查点 1.打开badboy,默认是录制状态,在地址栏中输入:http://http://www.sogou.com/,点击,如下图: 2.在文本框中输入yangxia-test,点击搜

Selenium+C#自动化脚本开发学习

Selenium+C#自动化脚本开发知识学习 1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver driver = new FirefoxDriver(); //打开指定的URL地址 driver.Navigate().GoToUrl(@"http://12.99.102.196:9080/corporbank/logon_pro.html"); //关闭浏览器 Driver.quit(); 网银浏览器兼容性测试过程中,关闭浏览器后会有对话框,此问题解决

puppet运维自动化之用户管理

系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户?那就是我们今天的主题,puppet运维自动化之用户管理. [导读] 系统管理员离不开账户管理,账户管理,密码管理,开发机器,测试机器,线上机器,都需要创建用户,并给与相关用户的权限.你如果要创建100个,1000个账户和密码,你会不会疯掉,如何在1分钟完成百上千个账户?那就是我们今天的主题,pup

java微信开发API解析(五)-用户管理

java微信开发API解析(五)-用户管理 全局说明 * 详细说明请参考前两篇文章. 本文说明 *本文分为五部分: * 工具类MyHttpUtils的封装 * 用户分组管理文档的简单阅读解析 * 分组bean的构建以及各种分组管理的实现源码 * 用户管理的应用场景 * 测试的微信号二维码 * 本文只分析用户管理的用户分组管理部分,其它都大同小异,不再分析处理.如需要,请留言. * 以后原理分析会越来越简洁,具体原理分析请查看以前文章. * 下一篇文章会对于用户普通消息.自定义菜单消息.自动完成用

linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版本非常多,相关的编译器,解释器也有很多,很多还有最小系统,嵌入式系统等等.同一功能的软件如果只有编译好的软件包,在其它linux的平台上,可能并不能正常安装运行,在此情况下,源码包编译安装出现了.所以本文的重点是以nginx为例,给出源码包编译安装的详细过程,同时带你手工编写自动化运行脚本. 准备工

gulp自动化任务脚本在HybridApp开发中的使用

目前做前端开发的同学可能都熟悉grunt,fis之类的自动化构建工具,其实在HybridApp开发中我们也可以使用这些工具来简化我们的工作,gulp就是一个比grunt,fis都先进的构建工具,用好gulp可以简化我们的工作流程,提升产品质量.本文会详细的说明我们移动App项目gulp的使用经验,部分关于gulp的介绍来自国外网站. gulp是 Fractal公司发布的一个新的基于nodejs的构建系统,目标是取代Grunt,成为最流行的JavaScript任务运行器.目前ionic框架默认的构