zoukankan      html  css  js  c++  java
  • Selenium的PageObject设计模式(2)

    一、代码与数据分离的方式(一)

    1.excel做数据源时表格设计

    2.读取出excel文件内元素组装成数组形式返回

     1 conf = ConfigUtils()
     2 elements_path=conf.get_elements_url
     3 
     4 class ElementExcelData:
     5     def __init__(self, sheet_name, element_path=elements_path):
     6         self.element_path = element_path
     7         # 打开excel文件
     8         self.workbook = xlrd.open_workbook(self.element_path)
     9         # sheet页名
    10         self.sheet = self.workbook.sheet_by_name(sheet_name)
    11         # 获取行数
    12         self.row_count = self.sheet.nrows
    13 
    14     def get_element_info(self):
    15         elements_info={}
    16         for i in range(1, self.row_count):
    17             element_info = {}
    18             element_info['element_name'] = self.sheet.cell_value(i, 1)
    19             element_info['locator_type'] = self.sheet.cell_value(i, 3)
    20             element_info['locator_value'] = self.sheet.cell_value(i, 4)
    21             element_info['timeout'] = int(self.sheet.cell_value(i, 5))
    22             elements_info[self.sheet.cell_value(i, 0)] = element_info
    23         return elements_info
    24 
    25 
    26 def get_page_info(sheet_name):
    27     element_data = ElementExcelData(sheet_name)
    28     elements = element_data.get_element_info()
    29     return elements

    3.读取excel为数据源

     1 # 读取excel为数据源
     2 elements = get_page_info('Login')
     3 
     4 class LoginPage(BasePage):
     5     def __init__(self,driver):
     6         super().__init__(driver)
     7 
     8         # 方式三:
     9         self.username_inputbox = elements['username_inputbox']
    10         self.password_inputbox = elements['password_inputbox']
    11         self.login_button = elements['login_button']

    二、代码与数据分离的方式(二)

    1.yaml文件做数据源时.yml设计方式

     2.读取出yaml文件内元素

     1 conf = ConfigUtils()
     2 elements_yaml_url=conf.get_elements_yaml_url
     3 
     4 class ElementYamlData:
     5     def __init__(self, sheet_name, element_path=elements_yaml_url):
     6         self.sheet_name =sheet_name
     7         # 打开yaml文件
     8         self.file = open(element_path, 'r', encoding='utf-8')
     9         # 读出yaml文件全部内容
    10         self.yaml_content = self.file.read()
    11 
    12     def read_yaml(self):
    13         yaml_list = yaml.load(self.yaml_content,Loader=yaml.FullLoader)
    14         elements = yaml_list[self.sheet_name]
    15         return elements

    3.读取yaml文件为数据源

     1 # 读取yaml文件为数据源
     2 element_infos = ElementYamlData('LoginPage')
     3 elements=element_infos.read_yaml()
     4 
     5 class LoginPage(BasePage):
     6     def __init__(self,driver):
     7         super().__init__(driver)
     8 
     9         # 方式三:
    10         self.username_inputbox = elements['username_inputbox']
    11         self.password_inputbox = elements['password_inputbox']
    12         self.login_button = elements['login_button']
  • 相关阅读:
    文件或目录损坏且无法读取的解决办法
    MP3/视频播放
    系统备份
    网线水晶头接法
    网站模板
    EasyNVR将如何能够把内网各种各样的监控摄像机对接到公网云平台
    EasyNVR将如何能够把内网各种各样的监控摄像机对接到公网云平台
    EasyPusher手机直播推送是如何实现后台直播推送的
    EasyPusher手机直播推送是如何实现后台直播推送的
    EasyDarwin开源流媒体服务器支持basic基本认证和digest摘要认证解析
  • 原文地址:https://www.cnblogs.com/wangyawen/p/12823460.html
Copyright © 2011-2022 走看看