Selenium2Library系列 keywords 之 _SelectElementKeywords 之 list_selection_should_be(self, locator, *items)
1 def list_selection_should_be(self, locator, *items): 2 """Verifies the selection of select list identified by `locator` is exactly `*items`. 3 4 If you want to test that no option is selected, simply give no `items`. 5 6 Select list keywords work on both lists and combo boxes. Key attributes for 7 select lists are `id` and `name`. See `introduction` for details about 8 locating elements. 9 """ 10 items_str = items and "option(s) [ %s ]" % " | ".join(items) or "no options" 11 self._info("Verifying list '%s' has %s selected." % (locator, items_str)) 12 items = list(items) 13 self.page_should_contain_list(locator) 14 select, options = self._get_select_list_options_selected(locator) 15 if not items and len(options) == 0: 16 return 17 selected_values = self._get_values_for_options(options) 18 selected_labels = self._get_labels_for_options(options) 19 err = "List '%s' should have had selection [ %s ] but it was [ %s ]" \ 20 % (locator, ' | '.join(items), ' | '.join(selected_labels)) 21 for item in items: 22 if item not in selected_values + selected_labels: 23 raise AssertionError(err) 24 for selected_value, selected_label in zip(selected_values, selected_labels): 25 if selected_value not in items and selected_label not in items: 26 raise AssertionError(err)
方法名:list_selection_should_be(self, locator, *items)
相似方法:
公共方法 验证指定labels或values的选项应该被选中
接收参数:locator,*items(labels/values)
13行:使用page_should_contain_list(self, locator, message='', loglevel='INFO')方法,验证select list 存在于当前页面
14行:使用_get_select_list_options_selected(self, locator)方法返回Select 元素对象和选中options数组
17行:使用_get_values_for_options(self, options)方法返回选中options的values数组
18行:使用_get_labels_for_options(self, options)返回选中options的labels数组
20、21行: 遍历所传入的items,判断item是否为选中项
24、25行: 遍历当前选中项的value和label,如果不在传入items中存在则报错
使用:
输出结果:
FAIL : List 'id=creOutTime' should have had selection [ 0 | 1 ] but it was [ 无逾期 | 无记录(征信空白) | 贷款或贷记卡当前逾期金额>=300元 ]