软件测试— web自动化项目实操

 

1 初始化项目

1.1新建项目,创建目录结构

             

1.2安装依赖包

  • 安装sekenium包
  • 安装parameterized包
  • 添加HTMLTestRunner
  • 查看已安装的依赖包:点击File—Settings—Project webAutoTest—Project Interpreter
 

2 初始化代码(通过公用方法进行封装,减少子类代码)

2.1封装驱动工具类:对浏览器驱动对象经常使用到的操作封装成一个工具类,方便代码的调用。一般包含1获取浏览器驱动对象并完成一个初始化的操作和 2关闭浏览器。

2.1.1具体步骤

# 导包

from selenium import webdriver

 

# 1 定义驱动工具类 

class DriverUtil:       //通过class关键字,driver驱动

_driver = None          //首先定义变量,为空

 

# 2 获取浏览器驱动对象,并完成初始化操作 (get_deriver方法)

@classmethod

def get_driver(cls):

    if cls._driver is None:

       cls._driver=webdriver.Chrome()    //获取驱动对象,如果cls._driver为空,创建Chrome浏览器

       cls._driver=maximize.window()     //完成初始化操作,1实现浏览器窗口最大化

       cls._driver=implicitly_wait(30)    //2定义隐私等待(30s)

       cls._driver.get("http://localhost")  //3打开项目首页 

    return cls._driver                      //4返回浏览器驱动对象

 

# 3 关闭驱动对象

@classmethod

def quit_driver(cls):

    if cls._driver:

       cls._driver.quit()    //如果cls._driver不为空,关闭驱动对象

       cls._driver = None   //设置为空,避免二次出错

2.2封装PO基类,定义BasePage和BaseHandle

2.2.1具体步骤

# 基类定义到base目录下

 

# 导包

from utils import DriverUtil

 

# 1 对象库层—基类封装

class BasePage:                                   //定义一个BasePage的类

      def _init_(self):                          //先定义,重写init方法

          self.driver = DriverUtil.get_driver   //在方法里面定义成一个属性,获取driver对象

      #元素定位

      def find_element(self,location):          //location该参数为元素的类型

 

     // #1 创建了driver对象后就可以直接使用,最终将element对象返回。

 

                  // 该方法需要传递两个参数,1元素定位的类型(从第一个数据中获取),2元素定位的内容

 

      return self.driver.find_element(location[0],location[1])   

 

# 2 操作层—基类封装

class BaseHandle:            //定义一个类

 

#完成一个方法的封装

#元素输入操作

//1方法名称定义成input_text,在方法里2定义参数(通过element对象传进来,text具体要输出的内容)

def input_text(self,element,text):   

    element.clear()

    element.send_keys(text)

 

 

3 实际项目—PO封装-首页

         

 3.1具体步骤,实现:在搜索框输入文本,进行搜索。

 代码

#对象库层

class IndexPage(BasePage):

          def _init_(self):

                 super()._init_()

           # 登录链接

      self.login_link = (By.LINK_TEXT,"登录")

 

           # 搜索输入框

     self.search_input = (By.ID,"q")                            //ID属性定位

            

 

 

           # 搜索按钮

              self.search_btn = (By.CSS_SELECTOR,"[type='submit']")  //CSS定位,根据属性进行定位type

                 

 

 

 

         def find_login_link(self):                  //以下完成了对象库的封装

             return self.find_element(self.login_link)

        def find_search_input(self):

             return self.find_element(self.search_input)

              def find_search_btn (self):

             return self.find_element(self.search_btn)

      

         # 操作层

          class IndexHandle(BaseHandle):

                def _init_(self):

               self.index_page = IndexPage()

 

                def click_login_link(self):

               self.index_page.find_login_link().click()

                

                def input_search_text(self,kw):          //传递一个关键字,kw

//1先调用对象库里的方法(find_search_input) 2传进搜索的关键字  

                self.input_text(self.index_page.find_search_input(),kw) 

            

               def click_search_btn(self):

               self.index_page.find_search_btn().click()  //找到search_btn元素,执行点击操作

 

#业务层

class IndexProxy:

       def _init_(self):

           self.index_handle = IndexHandle()

 

#跳转到登录页面

         def to_login_page(self):

              self.index_handle.click_login_link()

 

#搜索商品

         def search_goods(self,kw):        //定义一个参数,搜索的内容

    #输入关键字

             self.index_handle.input_search_text(kw)

    #点击搜索按钮

               self.index_handle.click_search_btn()

 

 3 实际项目

 

posted @ 2021-05-24 17:40  梨丸  阅读(428)  评论(0)    收藏  举报