WEB自动化-POM-ele 元素分离

因为实际工作中,有可能UI会进行变动,元素也会变动,此时需要把元素单独分离出来,方便修改

 

PO(page object)设计模式是在自动化中已经流行起来的一种易于维护和减少代码的设计模式. 在自动化测试中, PO对象作为一个与页面交互的接口.
测试中需要与页面的UI进行交互时, 便调用PO的方法. 这样做的好处是, 如果页面的UI发生了更改,那么测试用例本身不需要更改, 只需更改PO中的代码即可.

PO设计模式具有以下优点:
测试代码与页面的定位代码(如定位器或者其他的映射)相分离.

该页面提供的方法或元素在一个独立的类中, 而不是将这些方法或元素分散在整个测试中.

总结:PO就是,以每个网页或者网页中的组件为单位,进行自动化代码的维护,可以和关键字驱动结合起来,进一步提高代码的可维护性和复用性。
 
1、创建专门存放元素的package,例如:这里取名叫 locate,下面建立文件,叫allpage.py
定义元素的变量,
page_login_user = ['xpath', "//input[@placeholder='手机号码']"]
page_login_indexPwd = ['xpath', "//input[@placeholder='密码']"]
page_login_loginBtn = ['xpath', "//input[@name='btnLogin']"]

 

 
1++、创建conftest文件,定义pytest的fixcure装饰器,下面 定义函数来传递driver

 

2、创建keyword目录,创建keyword文件,设置关键字函数webkeys,函数的构造方法中传递driver

 3、创建page目录,下面创建业务模块文件,这里是login,以页面 或 元素为单位,测试代码与页面的定位代码(如定位器或者其他的映射)相分离.

导入allpage的时候建议使用蓝色框框内,方便查看数据来源,如allPages.page_login_user[0]代表的是xparh,allPages.page_login_user[1]代表的是值,黄色部分,有点麻烦

但是更简单的方式 是直接采用不定长传参*page_login_user ,自动传递page_login_user变量的两个值XPATH和值

另外,LoginPage继承Webkeys类,看可以引用 父类Webkeys类的open\locator等方法

 

 

 

 

4、 创建一个变量的目录,用来存放一些传参的变量,这里传递testcase里的URL,用户名和密码

 5、创建测试用例目录testcase,创建测试用例文件testcase.py,测试用例中导入var变量

测试用例的函数test_login02传参browse,login= loginpage(broser)   初始化页面对象,传入driver,

 

 

6、执行main文件

 

思维方式:把python自带的方式封装->根据业务去封装

 

 

posted @ 2023-08-09 01:55  琉璃星眸  阅读(28)  评论(0编辑  收藏  举报