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