zoukankan      html  css  js  c++  java
  • UI自动化测试的Page Object模式

    在UI级的自动化测试框架中,当页面样式改变或者页面元素属性改变,那么代码也要随之进行修改,如何做到高效快速的修改代码来适应这些改变呢,这个时候可以引入Page Object模式,也是页面对象设计模式.

    什么是Page Object

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。 获取页面中元素的属性可以通过id,class或者XPath获取,在id唯一的情况下,可以使用id获取页面元素,否则可以使用XPath定位页面元素.
    简而言之,就是把页面对象和用例进行分离,将页面的元素定位和元素行为封装一个Page类,测试用例调用Page的页面行为操作.
    

    Page Object的优点:

    1.创建可以跨多个测试用例共享的代码    
    2.减少重复代码的数量
    3.如果用户界面发生变更后,只需要在一个地方维护即可.
    

    Page Object 的应用.

       例如我的一个项目,在page目录下编写有关于页面对象层的代码,若Web页面发生变更,修改代码主要是在Page包中进行修改,testcase包中主要编写对象中所有的测试代码.
    

        在search_pg.py编写如下代码:
        class SearchPage(BasePage):
                _input_locator = (By.ID,"com.xueqiu.android:id/search_input_text")
                 _name_locator = (By.ID,"name")
    
            def serach(self,keyword):
                self.find_element(self._input_locator).send_keys(keyword)
                self.find_element(self._name_locator).click()
                return self
            def get_current(self):
                return float(self.driver.find_element(By.ID,"com.xueqiu.android:id/current_price").text)
    
    在test_search.py中编写用例代码
    class Test_appium:
    # searchdata = yaml.load(open("./search.yaml", 'r'))
    # searchdata = TestCase("step.yaml").case_data()
    def setup(self):
        self.search_pg = App.start().to_search()
    
    
    def test_search_po(self):
        self.search_pg.serach("alibaba")
        assert self.search_pg.get_current()>10
    
    # def test_yaml_step(self):
    #     TestCase("step.yaml").run(self.driver)
    
    def teardown(self):
        sleep(10)
        App.quit()
  • 相关阅读:
    【JZOJ3360】【NOI2013模拟】苹果树
    【SDOI2009】【BZOJ1878】HH的项链
    【JZOJ3234】阴阳
    【BZOJ3482】【JZOJ3238】[COCI2013]hiperprostor 超空间旅行
    【JZOJ3348】【NOI2013模拟】秘密任务 (Standard IO) (最小割唯一性的判定)
    【JZOJ4665】【CF407E】k-d-sequence
    【SHTSC2013】阶乘字符串
    【SHTSC2013】超级跳马
    半平面交笔记
    转:Why SeaJS
  • 原文地址:https://www.cnblogs.com/qixc/p/12373958.html
Copyright © 2011-2022 走看看