python+selenium2轻量级框架设计-09测试用例

import time
import unittest
from framework.browser_engine import BrowserEngine
from pageobjects.baidu_homepage import HomePage
class BaiduSearh(unittest.TestCase):
    #这个方法每运行一次test都会打开浏览器再关闭
    # def setUp(self):
    #     browser = BrowserEngine(self)
    #     self.driver = browser.open_browser(self)
    # def tearDown(self):
    #     self.driver.quit()
    @classmethod
    def setUpClass(cls):
        browser = BrowserEngine(cls)
        cls.driver = browser.open_browser(cls)
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_baidusearch(self):
        '''
        这个self.driver,可以这样理解:在当前测试类里面,self.driver是来自浏览器引擎类中方法得到的,
        在初始化一个页面对象的时候,也把这个来自浏览器引擎类的driver给赋值给当前的页面对象,
        这样,才能执行页面对象或者基类里面的相关driver方法。

        '''
        homepage = HomePage(self.driver)
        #调用页面对象方法
        homepage.search('selenium')
        homepage.search_click()
        time.sleep(3)
        #调用基类方法
        homepage.get_windows_img()
        self.assertIn('selenium',homepage.get_page_title(),'test fail')

    def test_baidusearch2(self):
        '''
        清空输入框,输入webdriver,并截图

        '''
        homepage = HomePage(self.driver)
        homepage.search('webdriver')
        homepage.search_click()
        time.sleep(3)
        homepage.get_windows_img()



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

这里用

@classmethod
    def setUpClass(cls):
        browser = BrowserEngine(cls)
        cls.driver = browser.open_browser(cls)
@classmethod
    def tearDownClass(cls):
        cls.driver.quit()

代替原来的方法,避免了每执行一个用例都会重新打开一个浏览器

然后要注意写用例方法时,需要加上

homepage = HomePage(self.driver)
 

这个self.driver,可以这样理解:在当前测试类里面,self.driver是来自浏览器引擎类中方法得到的, 在初始化一个页面对象的时候,也把这个来自浏览器引擎类的driver给赋值给当前的页面对象, 这样,才能执行页面对象或者基类里面的相关driver方法。

homepage.search('selenium')
homepage.search_click()

调用了上一节页面类的方法

    def search(self,text):
        self.type(self.input_box,text)

    def search_click(self):
        self.click(self.search_btn)
homepage.get_windows_img()

直接用的basepage的截图方法

    def get_windows_img(self):
        file_path = os.path.dirname(os.getcwd())+'/framework_demo/screenshots/'
        rq = time.strftime('%Y-%m-%d_%H.%M.%S')
        filename = file_path+rq+'.jpg'
        try:
            self.driver.get_screenshot_as_file(filename)
            logger.info('截图成功保存在screenshots目录下')
        except NameError as e:
            logger.error('截图失败:%s'%e)

然后是一个断言,判断selenium是不是页面的标题

猜你喜欢

转载自blog.csdn.net/u013434475/article/details/83011466