一、直接获取整个表格数据,包含表头
def table_info(self): tr_data=[] table_data=[] css='id=>useradmin'#根据表格id找到表格 self.pyse.element_wait(css) trs=self.pyse.get_element(css).find_elements_by_tag_name('tr')#找到表以后,找到表内的所有行tr print(trs) for tr in trs:#循环每一行 print(tr.text)#每一行的所有字段:序号 角色编号 角色名称 角色级别 状态 操作 tr_data=tr.text.split(' ')#将每行按照空格分割成列表,装入tr_data。此时tr_data中存放的就是每一行的字段 table_data.append(tr_data)#将每行的列表装入另一个数组中,这样相当于一个二维列表 print(table_data) ''' table_data=[['序号', '角色编号', '角色名称', '角色级别', '状态', '操作'], ['24', 'R001', '管理员', '0', '禁用', '启用', '修改']] tr_data=序号 角色编号 角色名称 角色级别 状态 操作 tr_data= 25 R002 校长 1 启用 禁用 修改 ....... '''
2、如果不要表头,可直接用定位tbody元素,同样的方法获取到表格数据,不包含表头
3、输入关键字,搜索表格数据,验证搜索功能
此时直接用第一种方法,会提示错误。因为点击查询的时候,tbody数据重新加载,不依附于原页面
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
没有和当前页面进行绑定,主要是页面刷新或者跳转引起的,需要重新获取一次元素。
此时需要重新定位tbody元素,再次查询
def aftersearch_tableinfo(self):#点击查询后,表格中tbody元素不在依附于当前页面,需要重新定位 css = 'css=>[role=alert]' # 重新定位tbody元素 self.pyse.element_wait(css) trs=self.pyse.get_element(css).find_elements_by_tag_name('tr') print(trs) tbody_data=[] for tr in trs: tr_data=tr.text.split(' ') tbody_data.append(tr_data) print(tbody_data) return tbody_data def check_role_number_in(self): data=self.aftersearch_tableinfo()#点击查询后,获取到表格数据,这里不包含表头 print(len(data)) if len(data)==0: print('查询关键字失败,校验失败,没有查到数据') else: for tr in range(len(data)):#遍历每一行,查看第2列是否都等于搜索关键字,tr表示每一行的行号,从0开始。因为我查询的关键词是按照第二列字段进行查的,所以此处和第二列比对 if data[tr][1]!=Setting_Role_data.role_number: return False else: return True