def time_component_test(key_name): """ key_name:place_holder,column_name,目前没发现不一样的,直接使用一个key_name表示 """ time_options = [ "昨天", "30天内", "上月", "本周", "今年", "3天内", "上周", "去年", "7天内", "本月" ] base.wait_element_click(base.find_xpath("时间")) for i in time_options: base.wait_element_click(base.find_xpath_by_placeholder(key_name)) base.wait_element_click(base.find_xpath(i)) base.wait_element_click(base.find_xpath_by_placeholder(key_name)) start_time = base.wait_element( base.find_xpath_by_placeholder("时间开始")).get_attribute("value") end_time = base.wait_element( base.find_xpath_by_placeholder("时间结束")).get_attribute("value") base.wait_element_click(base.find_xpath(i)) base.wait_table_refresh(base.find_xpath("组合查询"), 1, key_name) result = base.get_column_text(key_name) for j in result: time_str = j.replace("\n", " ") time_format_str = time.strptime(time_str, "%Y-%m-%d %H:%M:%S") start = time.strptime(start_time, "%Y-%m-%d %H:%M:%S") end = time.strptime(end_time, "%Y-%m-%d %H:%M:%S") print(f"{start_time} < {time_str} < {end_time}") assert start < time_format_str < end
def test_multi_split_with_weight(): vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) sku_code = product_interface.get_sku_code(product_code)[0] product_interface.modify_sku_price(sku_code, "100") sku_id_list = product_interface.get_sku_id("", product_code) modify_info_dict = {"重量": "1.0"} product_interface.multi_modify_sku_info(sku_id_list, modify_info_dict) sku_info = [{'商家编码': sku_code, '数量': '10'}] print(f"商品信息是:{sku_info}") order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", order_code) base.wait_element_click(base.get_cell_xpath(1, "订单编码")) base.click_space() element = base.wait_element(base.get_cell_xpath(1, "订单状态")) text = element.text base.wait_element_click(base.find_xpath("拆单")) base.wait_element(base.find_xpath("拆单", "按重量拆包")) time.sleep(1) base.wait_element_click(base.find_xpath("拆单", "按重量拆包")) time.sleep(1) with base.operate_page("订单", "打印发货", "打印发货框架"): start = datetime.datetime.now() while (datetime.datetime.now() - start).seconds < 30: base.fuzzy_search("发货单号", order_code) product_num_list = base.get_column_text("商品数") if len(product_num_list) == 4: assert ['1', '3', '3', '3'] == product_num_list break
def get_float_sku_info_text(row_keywords, sku_info_name): """ sku_info_name:图片,平台商品ID,平台规格ID,平台规格ID,平台货号,平台商家编码,平台规格名称,子单号,平台商品名称,商家编码, 货号,其他信息,单价,单价输入框,数量输入框,数量,总价,商品名称,规格名称,库存信息,删除,,,, sku_keywords:行关键字,如果为空,返回的是所有行的信息定位,有关键字则是包含关键字的行的信息定位 return:信息字符串 """ result = "" if sku_info_name == "其他信息": elements = base.wait_elements( get_floating_sku_info_xpath(row_keywords, sku_info_name)) for i in elements: result += i.text elif "平台" in sku_info_name: base.wait_element_click( get_floating_sku_info_xpath(row_keywords, "平台信息按钮")) element = base.wait_element( get_floating_sku_info_xpath(row_keywords, sku_info_name)) result = element.text base.wait_element_click( get_floating_sku_info_xpath(row_keywords, "其他信息")) else: element = base.wait_element( get_floating_sku_info_xpath(row_keywords, sku_info_name)) result = element.text return result
def test_multi_split_to_one_piece(): vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) sku_code = product_interface.get_sku_code(product_code)[0] product_interface.modify_sku_price(sku_code, "100") sku_info = [{'商家编码': sku_code, '数量': '20'}, ] order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", vip_name) base.wait_element_click(base.get_cell_xpath(1, "订单编码")) base.click_space() element = base.wait_element(base.get_cell_xpath(1, "订单状态")) text = element.text base.wait_element_click(base.find_xpath("拆单")) base.wait_element(base.find_xpath("拆单", "批量拆分成单件")) time.sleep(1) base.wait_element_click(base.find_xpath("拆单", "批量拆分成单件")) base.wait_element(base.find_xpath("提示", "订单会被拆分成商品数量为1的发货单发货,是否继续操作?")) time.sleep(1) base.wait_element_click(base.find_xpath("提示", "确定")) with base.operate_page("订单", "打印发货", "打印发货框架"): start = datetime.datetime.now() while (datetime.datetime.now() - start).seconds < 30: base.fuzzy_search("发货单号", order_code) product_num_list = base.get_column_text("商品数") if len(product_num_list) == 20: for i in product_num_list: assert int(i) == 1 break
def turn_to_normal(exception_type): """ exception_type:异常类型 目前包括:全部异常,黑名单等 """ base.wait_element_click(base.find_xpath("转正常单")) base.wait_element(base.find_xpath("选中", exception_type)) time.sleep(1) base.wait_element_click(base.find_xpath("选中", exception_type)) base.wait_element_click(base.find_xpath("转正常单", "清除选中异常"))
def test_bin_name_search_condition(): bin_name_list = ["A", "A1", "A1-2", "A1-2-", "A1-2-1"] time.sleep(1) for b in bin_name_list: base.wait_element( base.find_xpath_by_placeholder("固定库位")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder("固定库位")).send_keys(b) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("固定库位") for i in result: assert b in i, f"库存查询页面固定库位搜索条件失效,输入库位{b}之后搜索结果不正确"
def test_multi_split_with_warehouse(): vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) main_sku_code = product_interface.get_sku_code(product_code)[0] product_interface.modify_sku_price(main_sku_code, "100") sku_id_list = product_interface.get_sku_id("", product_code) modify_info_dict = {"优先出库仓": "主仓库"} product_interface.multi_modify_sku_info(sku_id_list, modify_info_dict) sku_info = [{'商家编码': main_sku_code, '数量': '2'}] product_code = base.get_now_string() product_interface.new_product(product_code) test_sku_code = product_interface.get_sku_code(product_code)[0] product_interface.modify_sku_price(test_sku_code, "100") sku_id_list = product_interface.get_sku_id("", product_code) modify_info_dict = {"优先出库仓": "测试仓"} product_interface.multi_modify_sku_info(sku_id_list, modify_info_dict) sku_info.append({'商家编码': test_sku_code, '数量': '2'}) print(f"商品信息是:{sku_info}") order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", order_code) base.wait_element_click(base.get_cell_xpath(1, "订单编码")) base.click_space() element = base.wait_element(base.get_cell_xpath(1, "订单状态")) text = element.text base.wait_element_click(base.find_xpath("拆单")) base.wait_element(base.find_xpath("拆单", "按仓库拆包")) time.sleep(1) base.wait_element_click(base.find_xpath("拆单", "按仓库拆包")) time.sleep(1) with base.operate_page("订单", "打印发货", "打印发货框架"): start = datetime.datetime.now() while (datetime.datetime.now() - start).seconds < 30: base.fuzzy_search("发货单号", order_code) base.scroll_to(2) warehouse_list = base.get_column_text("仓库") if len(warehouse_list) == 2: assert "主仓库" in warehouse_list assert "测试仓" in warehouse_list break base.scroll_to(0) base.wait_element_click(base.get_cell_xpath("主仓库", "商品信息")) sku_code_list = delivery_order.get_all_float_sku_info("商家编码") for i in sku_code_list: assert i == main_sku_code base.wait_element_click(base.get_cell_xpath("测试仓", "商品信息")) sku_code_list = delivery_order.get_all_float_sku_info("商家编码") for i in sku_code_list: assert i == test_sku_code
def test_multi_split_to_multi_sku_one_package(): vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) enough_sku_code_list = product_interface.get_sku_code(product_code) product_interface.modify_sku_price(enough_sku_code_list[0], "100") sku_info = [] for enough_sku_code in enough_sku_code_list: sku_info.append({'商家编码': enough_sku_code, '数量': '3'}) print(f"商品信息是:{sku_info}") sku_info.append({'商家编码': "测试商品1-红色 XXXXXXL", '数量': '3'}) sku_info.append({'商家编码': "测试商品1-红色 6XL", '数量': '3'}) order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", order_code) base.wait_element_click(base.get_cell_xpath(1, "订单编码")) base.click_space() element = base.wait_element(base.get_cell_xpath(1, "订单状态")) text = element.text base.wait_element_click(base.find_xpath("拆单")) base.wait_element(base.find_xpath("拆单", "多件成包")) time.sleep(1) base.wait_element_click(base.find_xpath("拆单", "多件成包")) time.sleep(1) with base.operate_page("订单", "打印发货", "打印发货框架"): start = datetime.datetime.now() while (datetime.datetime.now() - start).seconds < 30: base.fuzzy_search("发货单号", order_code) product_num_list = base.get_column_text("商品数") if int(len(product_num_list)) == 2: break assert ["21", "6"].sort() == product_num_list.sort() print(f"{product_num_list.sort()}") for i in range(1, 3): product_num_text = base.wait_element(base.get_cell_xpath(i, "商品数")).text print(product_num_text) if product_num_text == "6": base.wait_element_click(base.get_cell_xpath(i, "商品信息")) result = delivery_order.get_all_float_sku_info("商家编码") print(result) assert ["测试商品1-红色 XXXXXXL", "测试商品1-红色 6XL"].sort() == result.sort() elif product_num_text == "21": base.wait_element_click(base.get_cell_xpath(i, "商品信息")) result = delivery_order.get_all_float_sku_info("商家编码") print(result) assert result.sort() == enough_sku_code_list.sort() else: assert 1 == 2, "单件成包拆包结果不符合预期,请核实"
def test_sku_code_search_condition(): sku_code_list = base.get_column_text("商家编码") for sku in sku_code_list: print(f"需要搜索的商家编码是:{sku}") base.wait_element( base.find_xpath_by_placeholder("商家编码")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("商家编码")).send_keys(sku) base.wait_table_refresh(base.find_xpath('组合查询'), 1, "货号") result_num = base.wait_element(base.find_xpath("已选择", "本页共")).text if result_num == '本页共0条数据': print(f"商家编码[{sku}]没数据不用查看") else: result = base.get_column_text("商家编码") for i in result: assert sku in i
def test_multi_mark_memo_processed(): setting_info = {"开启": "true", "会员相同": "true"} setting_interface.save_auto_merge_setting(setting_info) time.sleep(5) print(f"开启合单设置之后等待五秒生效") vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) enough_sku_code_list = product_interface.get_sku_code(product_code) product_interface.modify_sku_price(enough_sku_code_list[0], "100") sku_info = [{'商家编码': enough_sku_code_list[0], '数量': '3'}] first_order_code = order_interface.new_order(vip_name, sku_info, "主仓库", "买家自提", "巨淘气", {"卖家备注": "111"})["Code"] second_order_code = order_interface.new_order(vip_name, sku_info, "主仓库", "买家自提", "巨淘气", {"买家备注": "222"})["Code"] third_order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.wait_element_click(base.find_xpath("订单状态", "待审核(有备注)")) time.sleep(5) base.fuzzy_search("订单编码", vip_name) result = base.get_column_text("会员名") assert len(result) == 3 base.wait_element_click(base.get_cell_xpath(first_order_code, "订单编码")) base.click_space() base.wait_element_click(base.find_xpath("修改&标记")) with base.wait_refresh(base.get_cell_xpath(first_order_code, "卖家备注")): base.wait_element_click(base.find_xpath("修改&标记", "标记备注已处理")) result = base.wait_element(base.get_cell_xpath(first_order_code, "卖家备注")).text print(f"{result}") assert result.replace("\n改", "").endswith("#") base.fuzzy_search("订单编码", vip_name) result = base.get_column_text("会员名") assert len(result) == 3 base.wait_element_click(base.get_cell_xpath(second_order_code, "订单编码")) base.click_space() base.wait_element_click(base.find_xpath("修改&标记")) with base.wait_refresh(base.get_cell_xpath(second_order_code, "买家备注")): base.wait_element_click(base.find_xpath("修改&标记", "标记备注已处理")) result = base.wait_element(base.get_cell_xpath(second_order_code, "买家备注")).text print(f"{result}") assert result.replace("\n改", "").endswith("#") base.wait_element_click(base.find_xpath("订单状态", "待审核(有备注)")) base.wait_element_click(base.find_xpath("订单状态", "待审核(无备注)")) time.sleep(1) base.fuzzy_search("订单编码", vip_name) result = base.get_column_text("会员名") assert len(result) == 3
def test_multi_split_with_inventory(): # TODO:(RUI):全部订单页面 按照库存拆单报错:当前数据可能被其他人操作了,请刷新后重试!,请排查下审核问题,数据:测试专用 测试 8888 订单编码:TD200925016 正常情况下不会报错 vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) enough_sku_code_list = product_interface.get_sku_code(product_code) product_interface.modify_sku_price(enough_sku_code_list[0], "100") stock_in_sku_info = [] stock_in_num = 0 for enough_sku_code in enough_sku_code_list: stock_in_num += 2 stock_in_sku_info .append({'商家编码': enough_sku_code, '数量': stock_in_num}) stock_in_order_id = inventory_interface.new_stock_in_order("主仓库", "供应商1", stock_in_sku_info)["ID"] inventory_interface.stock_in_stock_in_order(stock_in_order_id) sku_info = [] for enough_sku_code in enough_sku_code_list: sku_info .append({'商家编码': enough_sku_code, '数量': '3'}) print(f"商品信息是:{sku_info}") product_code = base.get_now_string() product_interface.new_product(product_code) lack_sku_code_list = product_interface.get_sku_code(product_code) product_interface.modify_sku_price(lack_sku_code_list[0], "100") for lack_sku_code in lack_sku_code_list: sku_info.append({'商家编码': lack_sku_code, '数量': '5'}) print(f"商品信息是:{sku_info}") order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", order_code) base.wait_element_click(base.get_cell_xpath(1, "订单编码")) base.click_space() element = base.wait_element(base.get_cell_xpath(1, "订单状态")) text = element.text base.wait_element_click(base.find_xpath("拆单")) base.wait_element(base.find_xpath("拆单", "按库存拆包")) time.sleep(1) base.wait_element_click(base.find_xpath("拆单", "按库存拆包")) time.sleep(1) with base.operate_page("订单", "打印发货", "打印发货框架"): start = datetime.datetime.now() while (datetime.datetime.now() - start).seconds < 30: base.fuzzy_search("发货单号", order_code) product_num_list = base.wait_element(base.get_cell_xpath(vip_name, "商品数")).text if int(product_num_list) == 9: print(f"按库存拆分:库存充足的库存全部拆包配货,库存不足的留下") break
def test_modify_bin(): bin_name = setting_interface.get_random_bin("主仓库")["库位"] print(bin_name) time.sleep(1) base.wait_element_click(base.find_xpath("显示0库存", "是")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") sku_code = base.wait_element(base.get_cell_xpath(1, "商家编码")).text element = base.wait_element(base.get_cell_xpath(1, "固定库位")) text = element.text base.wait_element_click(base.get_cell_xpath(sku_code, "固定库位")) base.wait_element_click(base.get_cell_xpath(sku_code, "固定库位", "改")) base.wait_element( base.find_xpath_by_placeholder("请输入完整库位编码")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("请输入完整库位编码")).send_keys(bin_name) base.wait_element_click(base.find_xpath("空值不修改", "确认")) base.wait_element_refresh(element, text) time.sleep(1) result = base.wait_element(base.get_cell_xpath(sku_code, "固定库位")).text bin_name_list = list(bin_name) bin_name_list.pop(bin_name.index("-")) result_bin_name = ''.join(bin_name_list) print(result_bin_name) assert result_bin_name in result
def test_product_code_search_condition(): product_code_list = list(set(base.get_column_text("货号"))) for product in product_code_list: if product == "": continue print(f"需要搜索的货号是:{product}") base.wait_element( base.find_xpath_by_placeholder("货号")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("货号")).send_keys(product) base.wait_table_refresh(base.find_xpath('组合查询'), 1, "货号") result_num = base.wait_element(base.find_xpath("已选择", "本页共")).text if result_num == '本页共0条数据': print(f"货号[{product}]没数据不用查看") else: result = base.get_column_text("货号") for i in result: assert product in i
def check_data(bin_inventory, marketability_inventory, inventory, balance, temporary_inventory, purchase_price, cost_price, purchase_num, sales_num, occupy_num): result = base.get_column_text("库位库存") for i in result: assert i == str(int(bin_inventory)), f"库位库存应该是{str(int(bin_inventory))},但实际是{i}" result = base.get_column_text("可销库存数") for i in result: assert i == str(int(marketability_inventory)), f"可销售库存数应该是{str(int(marketability_inventory))},但实际是{i}" result = base.get_column_text("库存预警值", "库存数") for i in result: assert i == str(int(inventory)), f"库存数应该是{str(int(inventory))},但实际是{i}" result = base.get_column_text("余额") for i in result: assert i == format(balance, '.2f'), f"余额应该是{format(balance, '.2f')},但实际是{i}" result = base.get_column_text("暂存位库存") for i in result: assert i == str(int(temporary_inventory)), f"暂存位库存应该是{str(int(temporary_inventory))},但实际是{i}" result = base.get_column_text("最新进价") for i in result: assert i == format(purchase_price, '.2f'), f"最新进价应该是{format(purchase_price, '.2f')},但实际是{i}" result = base.get_column_text("成本价") for i in result: assert i == format(cost_price, '.2f'), f"成本价应该是{format(cost_price, '.2f')},但实际是{i}" result = base.get_column_text("采购在途数") for i in result: assert i == str(int(purchase_num)), f"采购在途数应该是{str(int(purchase_num))},但实际是{i}" base.wait_element_click(base.find_xpath("刷新报表")) base.wait_element(base.find_xpath("刷新报表缓存", "确定")) time.sleep(1) base.wait_element_click(base.find_xpath("刷新报表缓存", "确定")) base.wait_element(base.find_xpath_by_tag_name("任务托管列表", "a")) time.sleep(1) base.wait_element_click(base.find_xpath_by_tag_name("任务托管列表", "a")) time.sleep(3) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "三十天销量") result = base.get_column_text("三十天销量") for i in result: assert i == str(int(sales_num)), f"三十天销量应该是{str(int(sales_num))},但实际是{i}" result = base.get_column_text("七天销量") for i in result: assert i == str(int(sales_num)), f"七天销量应该是{str(int(sales_num))},但实际是{i}" result = base.get_column_text("占用数") for i in result: assert i == str(int(occupy_num)), f"占用数应该是{str(int(occupy_num))},但实际是{i}"
def test_modify_warehouse_and_express(): vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) enough_sku_code_list = product_interface.get_sku_code(product_code) product_interface.modify_sku_price(enough_sku_code_list[0], "100") sku_info = [{'商家编码': enough_sku_code_list[0], '数量': '3'}] order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", order_code) base.wait_element_click(base.get_cell_xpath(1, "订单编码")) base.click_space() modify_info = {"仓库": "测试仓", "快递": "EMS", } order.modify_warehouse_and_express(order_code, modify_info) warehouse_name = base.wait_element(base.get_cell_xpath(order_code, "仓库")).text assert "测试仓" in warehouse_name express_name = base.wait_element(base.get_cell_xpath(order_code, "快递")).text assert "EMS" in express_name
def test_inventory_search_condition(): base.wait_element( base.find_xpath_by_placeholder("库存大于等于")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder("库存大于等于")).send_keys(100) base.wait_element( base.find_xpath_by_placeholder("库存小于")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder("库存小于")).send_keys(1000) base.wait_text_locate(base.find_xpath_by_placeholder("库存小于"), "1000") time.sleep(1) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("库存预警值", "库存数") for i in result: assert 100 <= int(i) < 1000
def setup_module(): base.driver = webdriver.Chrome() base.cookies = login.login() base.open_page("库存", "库存查询", "库存查询框架") element = '' try: element = base.wait_element(base.find_xpath("刷新报表缓存", "天数"), 5) except AssertionError as ae: print(ae) if element != '': time.sleep(1) base.wait_element_click(base.find_xpath("刷新报表缓存", "取消"))
def test_marketability_inventory(): time.sleep(1) base.wait_element( base.find_xpath_by_placeholder("可销库存数大于等于")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("可销库存数大于等于")).send_keys(100) base.wait_element( base.find_xpath_by_placeholder("可销库存数小于")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("可销库存数小于")).send_keys(1000) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("可销库存数") for i in result: assert 100 <= int(i) < 1000
def test_category_search_condition(): category_list = ["裤子", "上衣"] for category in category_list: print(f"本次搜索的分类:{category}") base.wait_element_click(base.find_xpath_by_placeholder("商品分类")) base.change_frame("选择分类") base.wait_element(base.find_xpath(category)) time.sleep(1) base.wait_element_click(base.find_xpath(category)) base.change_frame() base.wait_element_click(base.find_xpath("选择分类", "确定")) base.change_frame("库存查询框架") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") result_num = base.wait_element(base.find_xpath("已选择", "本页共")).text if result_num == '本页共0条数据': print(f"没数据不用查看") else: result = base.get_unique_column_text("货号") for product_code in result: category_result = product_interface.get_sku_info( product_code)["data"]["Items"][0]["ProductCategory"] print(f"本次搜索的货号:{product_code}的分类是{category_result}") assert category_result == category
def test_supplier_name_search_condition(): supplier_name_list = ["供应商1", "供应商2", "供应商3", "供应商4", "供应商5"] for supplier_name in supplier_name_list: base.wait_element_click(base.find_xpath_by_placeholder("供应商")) base.change_frame("选择供应商") base.chose_supplier_by_text(supplier_name) base.change_frame() base.wait_element_click(base.find_xpath("选择供应商", "确定")) base.change_frame("库存查询框架") base.wait_element(base.find_xpath('组合查询')) time.sleep(1) base.wait_table_refresh(base.find_xpath('组合查询'), 1, "货号") result_num = base.wait_element(base.find_xpath("已选择", "本页共")).text if result_num == '本页共0条数据': print(f"供应商[{supplier_name}]没数据不用查看") else: result = base.get_column_text("商家编码") for i in result: if "+" in i: continue print(f"需要校验供应商的商家编码:{i}") name = product_interface.get_sku_info( i)["data"]["Items"][0]["SupplierName"] assert supplier_name == name
def turn_to_exception(exception_type, exception_description='', normal_exceptions='常用异常1,常用异常2,常用异常3'): """ exception_type:异常类型 目前仅支持常用异常,黑名单,终结,标记异常 exception_description:异常描述,当使用常用异常时,用于指定是哪个常用异常 normal_exceptions:用于直接覆盖常用异常枚举 """ base.wait_element_click(base.find_xpath("转异常")) base.change_frame("全部订单框架", "请输入标记异常的类型,输入相关说明") if exception_type == '常用异常': base.wait_element_click(base.find_xpath("维护常用异常")) base.change_frame("全部订单框架") base.wait_element(base.find_xpath_by_placeholder( "请输入常用异常(逗号分隔)")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder( "请输入常用异常(逗号分隔)")).send_keys(normal_exceptions) base.wait_element_click(base.find_xpath("维护常用异常", "确认")) base.change_frame("全部订单框架", "请输入标记异常的类型,输入相关说明") time.sleep(1) base.wait_element_click(base.find_xpath("常用异常", exception_description)) elif exception_type in ["黑名单", "终结", "标记异常"]: base.wait_element_click(base.find_xpath(exception_type)) if exception_description != '': base.wait_element(base.find_xpath_by_tag_name( "异常描述:", "input")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_tag_name( "异常描述:", "input")).send_keys(exception_description) else: assert 1 == 2, "请核实异常类型是否正确,目前仅支持常用异常,黑名单,终结,标记异常" base.change_frame("全部订单框架") base.wait_element_click(base.find_xpath("请输入标记异常的类型,输入相关说明", "确认")) if exception_type == '终结': base.wait_element(base.find_xpath("是否终结", "确定")) time.sleep(1) base.wait_element_click(base.find_xpath("是否终结", "确定"))
def sku_info_search_condition_test(sku_info_test, column_name): """ 为了少写点代码,只用来测试商品信息搜索条件 """ for i in sku_info_test: if i == "": continue i = i.strip() base.wait_element(base.find_xpath_by_placeholder( column_name)).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder(column_name)).send_keys(i) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "订单编码") elements = base.wait_elements(base.get_column_xpath("商品信息")) print("每个订单的商品明细中必然存在一个商品是包含商家编码搜索条中输入的关键字") for j in elements: j.click() sku_code_result = order.get_all_float_sku_info(column_name) has_one_sku_code_contains_keywords = False for k in sku_code_result: if i in k: has_one_sku_code_contains_keywords = True break assert has_one_sku_code_contains_keywords
def test_brand_search_condition(): brand_name_list = ["阿迪达斯", "安踏", "波司登"] for brand_name in brand_name_list: base.wait_element_click(base.find_xpath_by_placeholder("请选择品牌")) base.wait_element_click(base.find_xpath("品牌", brand_name)) time.sleep(1) base.wait_table_refresh(base.find_xpath('组合查询'), 1, "货号") result_num = base.wait_element(base.find_xpath("已选择", "本页共")).text if result_num == '本页共0条数据': print(f"品牌[{brand_name}]没数据不用查看") else: result = base.get_column_text("商家编码") for i in result: brand_name = product_interface.get_sku_info( i)["data"]["Items"][0]["BrandName"] assert brand_name == brand_name
def test_multi_approve_button(): base.wait_element(base.find_xpath("订单状态", "待审核(无备注)")) time.sleep(1) base.wait_element_click(base.find_xpath("订单状态", "待审核(无备注)")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "订单编码") order_code = base.wait_element(base.get_cell_xpath(1, "订单编码")).text base.wait_element(base.find_xpath_by_placeholder("模糊搜索")).send_keys(order_code) base.wait_element_click(base.find_xpath("批量审核")) base.wait_element(base.find_xpath("提示", "根据当前查询条件共查询出")) time.sleep(1) base.wait_element_click(base.find_xpath("根据当前查询条件共查询出", "确定")) base.change_frame("全部订单框架", "任务托管列表") base.wait_text_locate(base.get_cell_xpath(1, "进度条"), '100%') base.change_frame("全部订单框架") base.wait_element_click(base.find_xpath_by_tag_name("任务托管列表", "a"))
def test_modify_address(): vip_name = "会员" + base.get_now_string() vip_interface.new_vip(vip_name) print(f"{vip_name}") product_code = base.get_now_string() product_interface.new_product(product_code) enough_sku_code_list = product_interface.get_sku_code(product_code) product_interface.modify_sku_price(enough_sku_code_list[0], "100") sku_info = [{'商家编码': enough_sku_code_list[0], '数量': '3'}] first_order_code = order_interface.new_order(vip_name, sku_info)["Code"] second_order_code = order_interface.new_order(vip_name, sku_info)["Code"] base.fuzzy_search("订单编码", vip_name) base.wait_element_click(base.get_cell_xpath(first_order_code, "订单编码")) base.click_space() modify_seller_memo_info = {"备注": "修改地址显示卖家备注"} order.modify_seller_memo(first_order_code, modify_seller_memo_info) modify_info = {"收货地址": "江苏省南京市鼓楼区鼓楼大道1185号", "收货人名": "芮苏云", "联系电话": "02133668823", "联系手机": "13772839830", "邮政编码": "211458", "核对备注": "修改地址显示卖家备注"} order.modify_address(first_order_code, modify_info) result = base.wait_element(base.get_cell_xpath(first_order_code, "收货地址")).text assert "鼓楼大道1185号" in result result = base.wait_element(base.get_cell_xpath(first_order_code, "省")).text assert "江苏省" in result result = base.wait_element(base.get_cell_xpath(first_order_code, "市")).text assert "南京市" in result result = base.wait_element(base.get_cell_xpath(first_order_code, "区")).text assert "鼓楼区" in result result = base.wait_element(base.get_cell_xpath(first_order_code, "收货人")).text assert "芮苏云" in result result = base.wait_element(base.get_cell_xpath(first_order_code, "手机号")).text assert "13772839830" in result base.select_all() print(f"----------------------------------试下勾选多个订单修改地址-------------------------------------") modify_info = {"选择地址": f"芮苏云,13772839830,江苏省 南京市 鼓楼区 鼓楼大道1185号"} order.modify_address(vip_name, modify_info) result_list = base.get_column_text('收货地址') for i in result_list: assert "江苏省 南京市 鼓楼区 鼓楼大道1185号" in i result_list = base.get_column_text('省') for i in result_list: assert "江苏省" in i result_list = base.get_column_text('市') for i in result_list: assert "南京市" in i result_list = base.get_column_text('区') for i in result_list: assert "鼓楼区" in i result_list = base.get_column_text('收货人') for i in result_list: assert "芮苏云" in i result_list = base.get_column_text('手机号') for i in result_list: assert "13772839830" in i
def test_function_button(): setting_info = { "记录会员上次交易价:手工单或者门店单保存时,记录会员的商品交易价格": "true", "记录会员上次交易价 同款同价:手工单或者门店单保存时,记录会员的商品交易价格 同款同价": "false", "只有手工修改售价才会记录预设价格": "true", } interface.save_order_setting(setting_info) print("非同款同价模式+修改才记录会员价设置完成,修改设置之后等5秒,让设置生效") time.sleep(5) print("先准备测试数据:") vip_name = "会员" + base.get_now_string() interface.new_vip(vip_name) print(f"新建会员{vip_name}") product_code = base.get_now_string() interface.new_product(product_code) print(f"新建货号{product_code}") sku_code = interface.get_sku_code(product_code)[0] interface.modify_sku_price(sku_code, "100") print(f"通过{sku_code}将{product_code}整款标准售价设置为100") interface.modify_vip_level(vip_name, "8折") print(f"修改会员{vip_name}的会员等级为:8折") interface.modify_preset_price(vip_name, product_code, 0, 200) print(f"修改会员{vip_name}的商品{product_code}预设价格为200") base.close_page("预设会员价明细") base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element_click( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") base.select_all() base.wait_element_click(base.find_xpath_with_spaces("批量修改预设价格")) base.wait_element_click("//input[@id='price']").clear() base.wait_element_click("//input[@id='price']").send_keys("300") element = base.wait_element(base.get_cell_xpath(1, "预设价格")) text = element.text base.wait_element_click(base.find_xpath("修改")) base.wait_element_refresh(element, text) print(f"修改商品的价格为300") print(f"验证所有商品的价格是300") result = base.get_column_text("预设价格") for i in result: assert i == "300" print(f"确定所有商品的价格是300") sku_code_list = interface.get_sku_code(product_code) for i in sku_code_list[0:3]: base.wait_element_click(base.get_cell_xpath(i, "会员名")) base.click_space() base.wait_element_click(base.find_xpath_with_spaces("批量删除预设价格")) time.sleep(1) base.wait_element_click(base.find_xpath("是否确认删除", "确认")) time.sleep(1) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") result = base.get_column_text("商家编码") assert result == sku_code_list[3:] print(result) print(sku_code_list[3:]) print("修改设置再来") print("修改设置再来") setting_info = { "记录会员上次交易价:手工单或者门店单保存时,记录会员的商品交易价格": "true", "记录会员上次交易价 同款同价:手工单或者门店单保存时,记录会员的商品交易价格 同款同价": "true", "只有手工修改售价才会记录预设价格": "true", } interface.save_order_setting(setting_info) print("非同款同价模式+修改才记录会员价设置完成,修改设置之后等5秒,让设置生效") time.sleep(5) print("先准备测试数据:") vip_name = "会员" + base.get_now_string() interface.new_vip(vip_name) print(f"新建会员{vip_name}") product_code = base.get_now_string() interface.new_product(product_code) print(f"新建货号{product_code}") sku_code = interface.get_sku_code(product_code)[0] interface.modify_sku_price(sku_code, "100") print(f"通过{sku_code}将{product_code}整款标准售价设置为100") interface.modify_vip_level(vip_name, "8折") print(f"修改会员{vip_name}的会员等级为:8折") interface.modify_preset_price(vip_name, product_code, 0, 200) print(f"修改会员{vip_name}的商品{product_code}预设价格为200") base.close_page("预设会员价明细") base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element_click( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") base.select_all() base.wait_element_click(base.find_xpath_with_spaces("批量修改预设价格")) base.wait_element_click("//input[@id='price']").clear() base.wait_element_click("//input[@id='price']").send_keys("300") element = base.wait_element(base.get_cell_xpath(1, "预设价格")) text = element.text base.wait_element_click(base.find_xpath("修改")) base.wait_element_refresh(element, text) print(f"修改商品的价格为300") print(f"验证所有商品的价格是300") result = base.get_column_text("预设价格") for i in result: assert i == "300" print(f"确定所有商品的价格是300") base.select_all() base.wait_element_click(base.find_xpath_with_spaces("批量删除预设价格")) time.sleep(1) base.wait_element_click(base.find_xpath("是否确认删除", "确认")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") base.wait_element(base.find_xpath("本页共0条数据"))
def test_search_condition(): # 先确定下设置 setting_info = { "记录会员上次交易价:手工单或者门店单保存时,记录会员的商品交易价格": "true", "记录会员上次交易价 同款同价:手工单或者门店单保存时,记录会员的商品交易价格 同款同价": "false", "只有手工修改售价才会记录预设价格": "true", } interface.save_order_setting(setting_info) print("这就为了换个行") print("非同款同价模式+修改才记录会员价设置完成,修改设置之后等5秒,让设置生效") time.sleep(5) base.close_page("预设会员价明细") base.open_page("会员", "预设会员价明细", "预设会员价明细框架") print("测试商品货号测试条件") base.wait_element_click( base.find_xpath_by_placeholder("商品货号")).send_keys("测试商品1") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") product_code_list = base.get_column_text("货号") for i in product_code_list: assert i == "测试商品1" print("清空搜索条件") base.wait_table_refresh(base.find_xpath("清空"), 1, "商家编码") print("验证预设会员价范围条件是否生效") print("先测试大于会员价") base.wait_element_click(base.find_xpath_with_spaces("大于会员价格")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert float(preset_price) > float(vip_price) print("再测试小于会员价") base.wait_element_click(base.find_xpath_with_spaces("小于会员价格")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert float(preset_price) < float(vip_price) print("再测试等于会员价") base.wait_element_click(base.find_xpath_with_spaces("等于会员价格")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert float(preset_price) == float(vip_price) print("清空搜索条件") base.wait_table_refresh(base.find_xpath("清空"), 1, "商家编码") print("测试价格差异") base.wait_element( base.find_xpath_by_placeholder("价格差异大于等于")).send_keys("10") base.wait_element(base.find_xpath_by_placeholder("价格差异小于")).send_keys("50") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert 10.0 <= abs(float(preset_price) - float(vip_price)) <= 50.0 print("清空搜索条件") base.wait_table_refresh(base.find_xpath("清空"), 1, "商家编码") print("测试价格差异百分比") base.wait_element( base.find_xpath_by_placeholder("价格差异百分比大于等于")).send_keys("10") base.wait_element( base.find_xpath_by_placeholder("价格差异百分比小于")).send_keys("50") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "商家编码") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text if float(vip_price) >= float(preset_price): higher_price = float(vip_price) else: higher_price = float(preset_price) assert 10.0 <= abs(float(preset_price) - float(vip_price)) / higher_price * 100 <= 50.0 # 先确定下设置 print("修改设置为同款同价,修改时才记录预设价格") print("修改设置为同款同价,修改时才记录预设价格") print("修改设置为同款同价,修改时才记录预设价格") setting_info = { "记录会员上次交易价:手工单或者门店单保存时,记录会员的商品交易价格": "true", "记录会员上次交易价 同款同价:手工单或者门店单保存时,记录会员的商品交易价格 同款同价": "true", "只有手工修改售价才会记录预设价格": "true", } interface.save_order_setting(setting_info) print("非同款同价模式+修改才记录会员价设置完成,修改设置之后等5秒,让设置生效") time.sleep(5) base.close_page("预设会员价明细") base.open_page("会员", "预设会员价明细", "预设会员价明细框架") print("测试商品货号测试条件") base.wait_element_click( base.find_xpath_by_placeholder("商品货号")).send_keys("测试商品1") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") product_code_list = base.get_column_text("货号") for i in product_code_list: assert i == "测试商品1" print("清空搜索条件") base.wait_table_refresh(base.find_xpath("清空"), 1, "货号") print("验证预设会员价范围条件是否生效") print("先测试大于会员价") base.wait_element_click(base.find_xpath_with_spaces("大于会员价格")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert float(preset_price) > float(vip_price) print("再测试小于会员价") base.wait_element_click(base.find_xpath_with_spaces("小于会员价格")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert float(preset_price) < float(vip_price) print("再测试等于会员价") base.wait_element_click(base.find_xpath_with_spaces("等于会员价格")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert float(preset_price) == float(vip_price) print("清空搜索条件") base.wait_table_refresh(base.find_xpath("清空"), 1, "货号") print("测试价格差异") base.wait_element( base.find_xpath_by_placeholder("价格差异大于等于")).send_keys("10") base.wait_element(base.find_xpath_by_placeholder("价格差异小于")).send_keys("50") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text assert 10.0 <= abs(float(preset_price) - float(vip_price)) <= 50.0 print("清空搜索条件") base.wait_table_refresh(base.find_xpath("清空"), 1, "货号") print("测试价格差异百分比") base.wait_element( base.find_xpath_by_placeholder("价格差异百分比大于等于")).send_keys("10") base.wait_element( base.find_xpath_by_placeholder("价格差异百分比小于")).send_keys("50") base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") for i in range(1, 10): vip_price = base.wait_element(base.get_cell_xpath(i, "会员价")).text preset_price = base.wait_element(base.get_cell_xpath(i, "预设价格")).text if float(vip_price) >= float(preset_price): higher_price = float(vip_price) else: higher_price = float(preset_price) assert 10.0 <= abs(float(preset_price) - float(vip_price)) / higher_price * 100 <= 50.0
def test_vip_price_detail(): # 先确定下设置 setting_info = { "记录会员上次交易价:手工单或者门店单保存时,记录会员的商品交易价格": "true", "记录会员上次交易价 同款同价:手工单或者门店单保存时,记录会员的商品交易价格 同款同价": "false", "只有手工修改售价才会记录预设价格": "true", } interface.save_order_setting(setting_info) print("这就为了换个行") print("非同款同价模式+修改才记录会员价设置完成,修改设置之后等5秒,让设置生效") time.sleep(5) base.close_page("预设会员价明细") base.open_page("会员", "预设会员价明细", "预设会员价明细框架") # 新建会员 vip_name = base.get_now_string() print(f"新建一个会员,会员名称:{vip_name}") interface.new_vip(vip_name) print(f"新建的会员:{vip_name}在预设会员价页面没有任何记录") # 查询确认新会员没有任何记录 base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") base.wait_element(base.find_xpath("本页共0条数据")) print(f"新建会员:{vip_name}确定在预设会员价页面没有任何记录") # 新建商品 product_code = base.get_now_string() print(f"新建商品货号:{product_code}") # 新建商品 interface.new_product(product_code) # 获取一个sku_code查看会员价格 sku_code = interface.get_sku_code(product_code)[0] print(f"取出一个商品:{sku_code}查看售价,此时售价应该为0") with base.operate_page("订单", "门店收银", "门店收银框架") as e: base.change_frame("门店收银框架", "选择会员") base.chose_vip(vip_name) base.change_frame("门店收银框架") base.wait_element_focus(base.find_xpath_by_placeholder("请扫描商品条码")) base.wait_element( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_element(base.find_xpath("搜索")).click() time.sleep(1) base.wait_element(base.find_xpath(product_code)).click() base.change_frame("门店收银框架") base.switch_to_frame(base.find_frame("商品选择")) price = base.wait_element( base.get_old_cell_input_xpath("红色 XS", "交易价格")).get_attribute("value") assert price == '0' print(f"确定{sku_code}的售价是0") # 设置商品的标准售价,第二价格,第三价格,第四价格 interface.modify_sku_price(sku_code, "100", "200", "300", "400") print(f"设置{sku_code}的价格分别为100,200,300,400,此时商品的价格应该是100") # 再次到门店开单页面查看售价是否是标准售价=100 with base.operate_page("订单", "门店收银", "门店收银框架") as e: base.change_frame("门店收银框架", "选择会员") base.chose_vip(vip_name) base.change_frame("门店收银框架") base.wait_element_focus(base.find_xpath_by_placeholder("请扫描商品条码")) base.wait_element( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_element(base.find_xpath("搜索")).click() time.sleep(1) base.wait_element(base.find_xpath(product_code)).click() base.change_frame("门店收银框架") base.switch_to_frame(base.find_frame("商品选择")) price = base.wait_element( base.get_old_cell_input_xpath("红色 XS", "交易价格")).get_attribute("value") assert price == '100' print(f"确定{sku_code}的售价是100") # 设置会员等级为8折,再次查看售价是否是80 print(f"将会员{vip_name}的会员等级设置为8折,此时售价应该是100*0.8") vip_level = "8折" interface.modify_vip_level(vip_name, vip_level) with base.operate_page("订单", "门店收银", "门店收银框架") as e: base.change_frame("门店收银框架", "选择会员") base.chose_vip(vip_name) base.change_frame("门店收银框架") base.wait_element_focus(base.find_xpath_by_placeholder("请扫描商品条码")) base.wait_element( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_element(base.find_xpath("搜索")).click() time.sleep(1) base.wait_element(base.find_xpath(product_code)).click() base.change_frame("门店收银框架") base.switch_to_frame(base.find_frame("商品选择")) price = base.wait_element( base.get_old_cell_input_xpath("红色 XS", "交易价格")).get_attribute("value") assert price == '80' print(f"确定会员:{vip_name}商品{sku_code}的售价是80") # 门店开单,不修改商品价格,还是没有记录 # sku_info_list 商品信息列表 sku_info_list = [] sku_info = {} product_info = interface.get_sku_info('', product_code) i = 1 for sku in product_info["data"]["Items"]: sku_info["SkuCode"] = sku["SkuCode"] i += 1 sku_info["Qty"] = i sku_info["Price"] = int(sku["StandardPrice"]) * int( interface.get_vip_level_info(vip_level)["data"]["Items"][0] ["Discount"]) / 10 sku_info_list.append(dict(sku_info)) print("不改变任何sku价格是商品明细列表信息:") for i in sku_info_list: print(i) print("不修改sku价格,预设会员价明细页面不应该有任何记录") # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) # 再次核对预设会员价明细页面还是0 base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(1) base.wait_element(base.find_xpath("本页共0条数据")) print("确定不修改售价不会有任何记录") # 再次开单,修改其中一个规则的价格,必须有一条记录 # 修改商品信息 modify_info = {} for i in range(0, 1): modify_sku_code = sku_info_list[i]["SkuCode"] modify_price = sku_info_list[i]["Price"] + 10 sku_info_list[i]["Price"] = copy.copy(modify_price) modify_info[modify_sku_code] = modify_price for k, v in modify_info.items(): print(f"修改{k}的价格为{v}") for i in sku_info_list: print(i) print("修改一个商品的售价之后,预设会员价明细页面应该有一条记录") # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) # 再次核对预设会员价明细页面有一条记录 base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(2) base.wait_element(base.find_xpath("本页共1条数据")) result = base.get_column_text("商家编码") assert len(result) == 1 for r in result: assert r in modify_info.keys() vip_price = base.wait_element(base.get_cell_xpath(r, "预设价格")).text assert float(modify_info[r]) == float(vip_price) print("修改一个商品的售价之后,预设会员价页面记录的只有一条记录,并且sku_code,预设价格核对无误") # 修改两个规格的价格,预设会员价明细页面会有两条明细 # 还是先修改商品价格 modify_info.clear() j = 10 for i in range(0, 2): modify_sku_code = sku_info_list[i]["SkuCode"] j += 7 modify_price = sku_info_list[i]["Price"] + j sku_info_list[i]["Price"] = modify_price modify_info[modify_sku_code] = modify_price for k, v in modify_info.items(): print(f"修改{k}的价格为{v}") print("修改两个sku价格之后的商品信息列表是:") for i in sku_info_list: print(i) print("修改两个商品价格之后开单,会员预设价页面应该有两条数据") # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) # 再次核对预设会员价明细页面有两条记录 base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(1) base.wait_element(base.find_xpath("本页共2条数据")) result = base.get_column_text("商家编码") assert len(result) == 2 for r in result: assert r in modify_info.keys() vip_price = base.wait_element(base.get_cell_xpath(r, "预设价格")).text assert float(modify_info[r]) == float(vip_price) print("修改两个商品之后开单,会员预设价页面只有两条记录,商家编码,预设价格经核实无误") # 全部更改则需要显示全部该商品的全部记录 modify_info.clear() for i in sku_info_list: modify_sku_code = i["SkuCode"] j += 5 modify_price = i["Price"] + j i["Price"] = modify_price modify_info[modify_sku_code] = modify_price for k, v in modify_info.items(): print(f"修改{k}的价格为:{v}") print("修改全部商品价格之后的商品信息列表是:") for i in sku_info_list: print(i) print("修改全部商品的价格之后,预设会员价页面应该有该款所有商品的记录") # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) # 再次核对预设会员价明细页面有两条记录 base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(1) base.wait_element(base.find_xpath(f"本页共{len(sku_info_list)}条数据")) result = base.get_column_text("商家编码") assert len(result) == len(sku_info_list) for r in result: assert r in modify_info.keys() vip_price = base.wait_element(base.get_cell_xpath(r, "预设价格")).text assert float(modify_info[r]) == float(vip_price) print("预设会员价页面有该款商品的全部记录,并且商家编码预设价格核对无误") print("在选择会员的情况下,核实下标准售价,第二价格,第三价格,第四价格,会员价格取值是否正确") result = base.get_column_text("标准售价") for r in result: print(f"标准售价应该是100实际是:{r},") assert r == '100' result = base.get_column_text("第二价格") for r in result: print(f"第二价格应该是200实际是:{r},") assert r == '200' result = base.get_column_text("第三价格") for r in result: print(f"第三价格应该是300实际是:{r},") assert r == '300' result = base.get_column_text("第四价格") for r in result: print(f"第四价格应该是400实际是:{r},") assert r == '400' result = base.get_column_text("会员价") for r in result: print(f"会员价应该是80实际是:{r},") assert r == '80' print("确定在选择会员的情况下,核实下标准售价,第二价格,第三价格,第四价格,会员价格取值是否正确") print("清空搜索条件之后,搜索货号,查看所有价格的取值是否正确") base.wait_table_refresh(base.find_xpath("清空"), 1, "货号") base.wait_element_click( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("标准售价") for r in result: print(f"标准售价应该是100实际是:{r},") assert r == '100' result = base.get_column_text("第二价格") for r in result: print(f"第二价格应该是200实际是:{r},") assert r == '200' result = base.get_column_text("第三价格") for r in result: print(f"第三价格应该是300实际是:{r},") assert r == '300' result = base.get_column_text("第四价格") for r in result: print(f"第四价格应该是400实际是:{r},") assert r == '400' result = base.get_column_text("会员价") for r in result: print(f"会员价应该是80实际是:{r},") assert r == '80' print("确定清空搜索条件之后,搜索货号,查看所有价格的取值是否正确") # 修改设置,再来一遍 print("修改设置为同款同价再跑一遍") print("修改设置为同款同价再跑一遍") print("修改设置为同款同价再跑一遍") setting_info = { "记录会员上次交易价:手工单或者门店单保存时,记录会员的商品交易价格": "true", "记录会员上次交易价 同款同价:手工单或者门店单保存时,记录会员的商品交易价格 同款同价": "true", "只有手工修改售价才会记录预设价格": "true", } interface.save_order_setting(setting_info) print("同款同价模式且只有修改时记录会员价格设置完成,") print("修改设置之后等待5秒等设置生效") time.sleep(5) base.close_page("预设会员价明细") base.open_page("会员", "预设会员价明细", "预设会员价明细框架") # 新建会员 vip_name = base.get_now_string() print(f"新建会员会员名称:{vip_name}") interface.new_vip(vip_name) # 查询确认新会员没有任何记录 base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") base.wait_element(base.find_xpath("本页共0条数据")) # 新建商品 product_code = base.get_now_string() print(f"新建商品货号:{product_code}") # 解析出第一个skuCode print("验证没有设置价格时,售价为0") sku_code = interface.new_product( product_code)["data"]["ProductSkus"][0]["Code"] with base.operate_page("订单", "门店收银", "门店收银框架") as e: base.change_frame("门店收银框架", "选择会员") base.chose_vip(vip_name) base.change_frame("门店收银框架") base.wait_element_focus(base.find_xpath_by_placeholder("请扫描商品条码")) base.wait_element( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_element(base.find_xpath("搜索")).click() time.sleep(1) base.wait_element(base.find_xpath(product_code)).click() base.change_frame("门店收银框架") base.switch_to_frame(base.find_frame("商品选择")) price = base.wait_element( base.get_old_cell_input_xpath("红色 XS", "交易价格")).get_attribute("value") assert price == '0' or price is None print("确定没有设置价格时,售价为0") # 设置商品的标准售价,第二价格,第三价格,第四价格 interface.modify_sku_price(sku_code, "100", "200", "300", "400") # 再次到门店开单页面查看售价是否是标准售价=100 print("验证标准售价设置为100,之后售价应该为100") with base.operate_page("订单", "门店收银", "门店收银框架") as e: base.change_frame("门店收银框架", "选择会员") base.chose_vip(vip_name) base.change_frame("门店收银框架") base.wait_element_focus(base.find_xpath_by_placeholder("请扫描商品条码")) base.wait_element( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_element(base.find_xpath("搜索")).click() time.sleep(1) base.wait_element(base.find_xpath(product_code)).click() base.change_frame("门店收银框架") base.switch_to_frame(base.find_frame("商品选择")) price = base.wait_element( base.get_old_cell_input_xpath("红色 XS", "交易价格")).get_attribute("value") assert price == '100' print("确定标准售价设置为100,之后售价应该为100") print("验证会员等级设置为8折之后,售价应该是80") # 设置会员等级为8折,再次查看售价是否是80 vip_level = "8折" interface.modify_vip_level(vip_name, vip_level) with base.operate_page("订单", "门店收银", "门店收银框架") as e: base.change_frame("门店收银框架", "选择会员") base.chose_vip(vip_name) base.change_frame("门店收银框架") base.wait_element_focus(base.find_xpath_by_placeholder("请扫描商品条码")) base.wait_element( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_element(base.find_xpath("搜索")).click() time.sleep(1) base.wait_element(base.find_xpath(product_code)).click() base.change_frame("门店收银框架") base.switch_to_frame(base.find_frame("商品选择")) price = base.wait_element( base.get_old_cell_input_xpath("红色 XS", "交易价格")).get_attribute("value") assert price == '80' print("确定会员等级设置为8折之后,售价应该是80") # 门店开单,不修改商品价格,还是没有记录 # sku_info_list 商品信息列表 sku_info_list = [] sku_info = {} product_info = interface.get_sku_info('', product_code) i = 1 for sku in product_info["data"]["Items"]: sku_info["SkuCode"] = sku["SkuCode"] i += 1 sku_info["Qty"] = i sku_info["Price"] = int(sku["StandardPrice"]) * int( interface.get_vip_level_info(vip_level)["data"]["Items"][0] ["Discount"]) / 10 sku_info_list.append(dict(sku_info)) print("不改变任何sku价格是商品明细列表信息:") for i in sku_info_list: print(i) print("验证不改变商品售价时,预设会员价页面没有记录") # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) # 再次核对预设会员价明细页面还是0 base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(1) base.wait_element(base.find_xpath("本页共0条数据")) # 再次开单,修改其中一个规则的价格,必须有一条记录 print("确定不改变商品售价时,预设会员价页面没有记录") print("验证修改一个商品售价之后,预设会员价页面有该款记录") # 修改商品信息 modify_info = {} for i in range(0, 1): modify_sku_code = sku_info_list[i]["SkuCode"] modify_price = sku_info_list[i]["Price"] + 10 sku_info_list[i]["Price"] = copy.copy(modify_price) modify_info[modify_sku_code] = modify_price for k, v in modify_info.items(): print(f"修改{k}的价格为{v}") for i in sku_info_list: print(i) # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) # 再次核对预设会员价明细页面有一条记录 base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(2) base.wait_element(base.find_xpath("本页共1条数据")) result = base.get_column_text("货号") assert len(result) == 1 for r in result: assert r == product_code vip_price = base.wait_element(base.get_cell_xpath(r, "预设价格")).text assert float(vip_price) in modify_info.values() print("确定修改一个商品售价之后,预设会员价页面有该款记录") print("修改整款商品价格之后,预设会员价页面也只有一个价格") # 修改所有商品价格 modify_info.clear() for i in sku_info_list: modify_sku_code = i["SkuCode"] j += 5 modify_price = 195 i["Price"] = modify_price modify_info[modify_sku_code] = modify_price for k, v in modify_info.items(): print(f"修改{k}的价格为:{v}") print("修改全部商品价格之后的商品信息列表是:") for i in sku_info_list: print(i) # 商品数据确定之后直接开单 interface.new_pos_oder(vip_name, sku_info_list) base.open_page("会员", "预设会员价明细", "预设会员价明细框架") base.wait_element(base.find_xpath_by_placeholder("会员")).click() base.change_frame("预设会员价明细框架") base.switch_to_frame(base.find_frame("选择会员")) base.chose_vip(vip_name) base.change_frame("预设会员价明细框架") time.sleep(1) base.wait_element(base.find_xpath("本页共1条数据")) result = base.get_column_text("货号") assert len(result) == 1 for r in result: assert r == product_code vip_price = base.wait_element(base.get_cell_xpath(r, "预设价格")).text assert float(vip_price) in modify_info.values() print("修改整款商品价格之后,预设会员价页面也只有一个价格") print("预设会员价页面有该款商品的全部记录,并且商家编码预设价格核对无误") print("在选择会员的情况下,核实下标准售价,第二价格,第三价格,第四价格,会员价格取值是否正确") result = base.get_column_text("标准售价") for r in result: print(f"标准售价应该是100实际是:{r},") assert r == '100' result = base.get_column_text("第二价格") for r in result: print(f"第二价格应该是200实际是:{r},") assert r == '200' result = base.get_column_text("第三价格") for r in result: print(f"第三价格应该是300实际是:{r},") assert r == '300' result = base.get_column_text("第四价格") for r in result: print(f"第四价格应该是400实际是:{r},") assert r == '400' result = base.get_column_text("会员价") for r in result: print(f"会员价应该是80实际是:{r},") assert r == '80' print("确定在选择会员的情况下,核实下标准售价,第二价格,第三价格,第四价格,会员价格取值是否正确") print("清空搜索条件之后,搜索货号,查看所有价格的取值是否正确") base.wait_table_refresh(base.find_xpath("清空"), 1, "货号") base.wait_element_click( base.find_xpath_by_placeholder("商品货号")).send_keys(product_code) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("标准售价") for r in result: print(f"标准售价应该是100实际是:{r},") assert r == '100' result = base.get_column_text("第二价格") for r in result: print(f"第二价格应该是200实际是:{r},") assert r == '200' result = base.get_column_text("第三价格") for r in result: print(f"第三价格应该是300实际是:{r},") assert r == '300' result = base.get_column_text("第四价格") for r in result: print(f"第四价格应该是400实际是:{r},") assert r == '400' result = base.get_column_text("会员价") for r in result: print(f"会员价应该是80实际是:{r},") assert r == '80' print("确定清空搜索条件之后,搜索货号,查看所有价格的取值是否正确")
def modify_address(keyword, modify_info): """ key_word:关键字,比如order_code modify_info = {"收货地址": "江苏省南京市鼓楼区鼓楼大道1185号", "收货人名": "aaaaa", "联系电话":"BBBBBB", "联系手机": "13772839830", "邮政编码": "211458","核对备注","11111111111111","选择地址": "会员名,手机号,地址"} """ base.scroll_to(4) with base.wait_refresh(base.get_cell_xpath(keyword, "地址")) as e: base.wait_element_click(base.find_xpath("修改&标记")) base.wait_element_click(base.find_xpath("修改&标记", "修改地址")) base.change_frame("修改地址") for k, v in modify_info.items(): if k == "收货地址": base.wait_element( base.find_xpath_by_tag_name( "收货地址", "input[7]")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_tag_name("收货地址", "input[7]")).send_keys(v) base.wait_element( base.find_xpath_by_tag_name("收货地址", "input[7]")).send_keys( Keys.ENTER) time.sleep(1) elif k == "收货人名": base.wait_element(base.find_xpath_by_tag_name( "收货人名", "input")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_tag_name( "收货人名", "input")).send_keys(v) elif k == "联系电话": base.wait_element(base.find_xpath_by_tag_name( "联系电话", "input")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_tag_name( "联系电话", "input")).send_keys(v) elif k == "联系手机": base.wait_element(base.find_xpath_by_tag_name( "联系手机", "input")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_tag_name( "联系手机", "input")).send_keys(v) elif k == "邮政编码": base.wait_element(base.find_xpath_by_tag_name( "邮政编码", "input")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_tag_name( "邮政编码", "input")).send_keys(v) elif k == "选择地址": base.wait_element(base.find_xpath("地址", v)) time.sleep(1) base.wait_element_click(base.find_xpath("地址", v)) elif k == "核对备注": seller_memo = base.wait_element( base.find_xpath_by_tag_name( "卖家备注", "textarea")).get_attribute("value") print(f"{seller_memo}") assert seller_memo == v base.change_frame() base.wait_element_click(base.find_xpath("修改地址", "确定")) base.change_frame("全部订单框架")
def modify_note(keyword, modify_info): """ key_word:关键字,比如order_code modify_info = {"便签": "111", "追加": True, "系统便签":"爆款订单", "常用便签": "常用便签1", "维护常用便签": "常用便签1:红旗,常用便签2:黄,常用便签3:蓝"} """ with base.wait_refresh(base.get_cell_xpath(keyword, "便签")) as e: base.wait_element_click(base.find_xpath("修改&标记")) base.wait_element_click(base.find_xpath("修改&标记", "修改便签")) base.change_frame("全部订单框架", "修改订单便签") for k, v in modify_info.items(): if k == "便签": base.wait_element( base.find_xpath_by_tag_name( "选择的", "textarea", True)).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_tag_name("选择的", "textarea", True)).send_keys(v) elif k == "追加": element = base.wait_element( base.find_xpath_by_inner_tag_name("追加便签", "input")) is_select = element.is_selected() print(f"输入的值是{v}") print(f"元素是否被选中{is_select}") print(f"是否相等{is_select == v}") if is_select != v: base.wait_element_click( base.find_xpath_by_inner_tag_name("追加便签", "input")) elif k == "系统便签": base.wait_element(base.find_xpath("系统标签", v)) time.sleep(1) base.wait_element_click(base.find_xpath("系统标签", v)) elif k == "常用便签": base.wait_element(base.find_xpath("常用标签", v)) time.sleep(1) base.wait_element_click(base.find_xpath("常用标签", v)) elif k == "维护常用便签": base.wait_element_click(base.find_xpath("维护常用便签")) base.wait_element( base.find_xpath_by_placeholder("请输入常用便签(逗号分隔)")).send_keys( Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("请输入常用便签(逗号分隔)")).send_keys( v) base.wait_element_click(base.find_xpath("维护常用便签", "确认")) base.change_frame("全部订单框架") base.wait_element_click(base.find_xpath("修改订单便签", "保存"))