Python+Selenium获取列表数据(根据查询值进行编辑/删除操作)

1、获取列表页面表格数据

    # 获取列表全部数据
    def get_table_content(self):
        """
        读取列表数据
        :return:
        """
        time.sleep(1)
        # 页面存在iframe(先切换)
        self.switch_iframe(AXPL.swdj_menu_iframe[0], doc="收文登记首页")
        list_1= []
        list_2= []
        # 表格定位路径
        table_tbody = "//table[@class='el-table__body']//tbody"
        element = self.driver.find_element_by_xpath(table_tbody)
        # 获取每一行数据tr
        table_tr_list = element.find_elements_by_tag_name("tr")
        # 按行查询表格的数据,取出的数据是一整行
        for tr in table_tr_list:
        	# tr.text获取表格每行的文本内容、切割字符串
            list_2= (tr.text).split()
            list_1.append(list_2)
        # 退出iframe
        self.driver.switch_to_default_content()
        # 返回
        return list_1

list_1 返回数据格式如下显示:

[['测试标题5', '测试单位5', '韦XX', '2021-07-14', '未提交', '传递', '删除'], ['测试标题4', '测试单位4', '韦XX', '2021-07-14', '未提交', '传递', '删除'], ['测试标题3', '测试单位3', '韦XX', '2021-07-14', '未提交', '传递', '删除'], ['测试标题2', '测试单位2', '韦XX', '2021-07-14', '未提交', '传递', '删除'], ['XXXX职业技术学院-行政', 'XXXX职业技术学院', '陈XXX', '2021-04-14', '秘书科领导拟办意见(黄XX)']]

2、判断所操作元素是否存在列表中,若存在定位其元素位置;若不存在,跳过该操作

    def find_table_data(self):
        """
        循环遍历table数据,确定查询数据的位置
        :return:
        """
        # 调用获取全部列表数据函数,获取其列表的返回值信息
        arr_data = self.get_table_content()
        print(arr_data )
        queryContent = "测试标题2"
        for i in range(len(arr_data)):
            for j in range(len(arr_data [i])):
                if queryContent == arr_data [i][j]:
                    print("%r坐标为(%r,%r)" % (queryContent, i + 1, j + 1))
                    return i
            	else
            		return 0           

3、删除该元素

    # 删除某行元素
    def del_table_data(self):
        """
        定位到需要删除数据的行,点击对应的删除按钮
        :return:
        """
        # 调用函数获取查询数据所在的行
        row = self.table_data()
        if row != 0:
            time.sleep(2)
            self.switch_iframe(AXPL.swdj_menu_iframe[0], doc="收文登记首页")
            table_tbody = "//table[@class='el-table__body']//tbody"
            table = self.driver.find_element_by_xpath(table_tbody)
            # 通过标签名获取表格的所有行
            table_tr_list = table.find_elements_by_tag_name("tr")
            table_tr_list[row].find_element_by_xpath(".//button//span[contains(.,'删除')]").click()
            time.sleep(1)
            self.click(AXPL.del_confirm_btn, doc="点击确认按钮")
            self.driver.switch_to_default_content()
        else:
            print("该元素不存在,请重新选择!")

4、执行测试用例

    def test_f(self):
        time.sleep(1)
        B = AXP(self.driver).table_data()
        AXP(self.driver).del_table_data()
        print(B)

你可能感兴趣的:(学习,自动化测试相关,selenium,python,列表操作)