自动化测试页面处理

1.在定义类时,可以为类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上属性。

__init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。

相应地,创建实例时,就必须要提供除 self 以外的参数。

    def __init__(self, selib):
        # 页面初始化
        self.selib = selib

2.seleniumlibrary

self.selib.click_element(self._locators[locator_name])
#点击元素
locator_name:可以是css/xpath等,但一般用css因为xpath受页面影响较大
self.selib.unselect_frame()
#释放页面
self.selib.select_frame('main')
#选择主页面
    def get_element_from_table(self, table_locator, btn_locater, row, column):
        t = TableElementKeywords(self.selib)
        cell = t._get_cell(table_locator, row=row, column=column)
        return cell.find_element_by_css_selector(btn_locater)
#从表格中查找元素,分别为表格位置,行,列,返回值通过css
    def edit_btn_for_table(self, table_locator, btn_locater, row, dict):
        '''
        启用 or 不启用 table当中的选项

        '''
        for expect_value, col in dict.items():
            if expect_value is not None:
                cell = self.get_btn_from_table(table_locator, btn_locater, row, col)
                if cell.get_property('title') is not expect_value:
                    cell.click()
                else:
                    pass
#cell.get_property获取cell的属性值
    def switch_to_tab_page(self, locator_name):
        self.switch_to_frame_subnav()
        self.click_element(locator_name)
        self.selib.unselect_frame()、
#切换主页面的各个标签页面
#页面切换
h = self.selib.get_window_handles()
self.selib.select_window(h[1])
self.selib.select_window(h[0])

#下面两个是成对出现的,定位到主页面后操作完后需释放页面
self.switch_to_frame_main()
            self.switch_to_frame_none()
self.selib.input_text(self._locators['name'],name)#文本输入框
self.selib.select_from_list_by_label('sel_file',i)
    def select_from_list_by_label(self, locator, *labels):
        if not labels:
            raise ValueError("No labels given.")
        self.info("Selecting options from selection list '%s' by label%s %s."
                  % (locator, s(labels), ', '.join(labels)))
        select = self._get_select_list(locator)
        for label in labels:
            select.select_by_visible_text(label)

#sel_file是检察元素时txt前的部分,这行代码适用于下拉选择框中不能输入文本的类型。下面为函数原型。
common_wait_shade_disappear(self.selib)#对于遮罩的处理
checkbox_on_off(self.selib,self._locators['connect'],methods_control_connect)
#方块选择的处理。下面为函数原型。
def checkbox_on_off(selib, locators, ret):
#     check = selib.get_webelement(locators)
    if ret is not None:
        if ret == 'off':
            selib.unselect_checkbox(locators)
#             if check.is_selected() is True:
#                 selib.click_element(locators)
#             else:
#                 pass
        elif ret == 'on':
            selib.select_checkbox(locators)
        else:
            raise AssertionError("input 'on' or 'off' ")
#             if check.is_selected() is not True: 
#                 selib.click_element(locators)   
self.selib.select_radio_button(group_name=group_name, value=value)
#小圆点选择的处理。下面为函数原型。
    def select_radio_button(self, group_name, value):
        self.info("Selecting '%s' from radio button '%s'."
                  % (value, group_name))
        element = self._get_radio_button_with_value(group_name, value)
        if not element.is_selected():
            element.click()
common_select_checklist(self.selib,'se_key_word',value=se_keywords_filter)
#可输入文本选择框处理
def common_select_checklist(selib, locator, value):
    selib.click_element(locator)
    selib.input_text('id=%stxt' % locator, value)
    csslocator="css=#%s #combo_list tr" % locator
    el_value = selib.find_elements(csslocator)
    # print(el_value[0].text)
    for item in el_value:
        if item.text == value:
            item.click()
            break
        if el_value.index(item) > 2:
            raise AssertionError(u'没有找到值: %s'%(value))
            break
#页面遮罩加载函数原型
def common_wait_shade_disappear(selib, timeout=10):
    '''
        刷新时等待页面的加载进度条消失
    '''
    t = 0
    while True:
        try:
            shade = selib.get_webelement('id=Javascript.Div1')
            if shade.value_of_css_property('visibility') == 'hidden':
                break
            else:
                time.sleep(1)
                t += 1
            if t >= timeout:
                break

        except StaleElementReferenceException:
            time.sleep(1)
            t += 1
        except:
#             traceback.print_exc()
            break

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值