def login(): base.driver.maximize_window() base.driver.get("http://erp12345.com") base.wait_element( base.find_xpath_by_placeholder("公司名")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder("公司名")).send_keys("测试专用") base.wait_element( base.find_xpath_by_placeholder("用户名")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder("用户名")).send_keys("测试") base.wait_element( base.find_xpath_by_placeholder("登录密码")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.find_xpath_by_placeholder("登录密码")).send_keys("8888") base.wait_element(base.find_xpath("登录")).click() base.wait_element(base.find_xpath("测试专用-测试")) coo = base.driver.get_cookies() cookie_str = 'TOKEN=' for c in coo: if c['name'] == 'TOKEN': cookie_str += c['value'] cookie_str += ';' elif c['name'] == 'TENANTID': cookie_str += 'TENANTID=' cookie_str += c['value'] # 获取当前文件的目录 cur_path = os.path.abspath(os.path.dirname(__file__)) # 获取根目录 root_path = cur_path[:cur_path.find("newSgTestForAll\\") + len("newSgTestForAll\\")] with open(root_path + "/page/cookie.txt", "w") as file: file.truncate() file.write(cookie_str) return cookie_str
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 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 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 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 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 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 test_barcode_search_condition(): print(f"先用商家编码获取条码单个搜索,再用货号批量搜索") sku_code_list = { "2009290026958", "2009290027054", "2009290026965", "2009290027061", "2009290026972", "2009290027078", "2009290026989", "2009290027085", "2009290027184", "2009290027160", "2009290027153", "2009290027146", "2009290027177", "2009290027092", "2009290027191", "2009290027108", "2009290027207", "2009290027115", "2009290027214", } for barcode in sku_code_list: print(f"需要搜索的商品条码是{barcode}") base.wait_element( base.find_xpath_by_placeholder("条码")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("条码")).send_keys(barcode) 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"商品条码[{barcode}]没数据不用查看") else: result = base.get_column_text("商品条码") for i in result: assert barcode == i base.wait_element( base.find_xpath_by_placeholder("条码")).send_keys(Keys.CONTROL + 'a') for barcode in sku_code_list: print(f"需要搜索的商品条码是{barcode}") base.wait_element( base.find_xpath_by_placeholder("条码")).send_keys(barcode) base.wait_element(base.find_xpath_by_placeholder("条码")).send_keys( Keys.ENTER) 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 i in result: assert i in sku_code_list
def test_show_zero_inventory_search_condition(): time.sleep(1) base.wait_element_click(base.find_xpath("显示0库存", "是")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("库存预警值", "库存数") for i in result: assert i == "0" base.wait_element_click(base.find_xpath("显示0库存", "否")) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") result = base.get_column_text("库存预警值", "库存数") for i in result: assert i != "0"
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_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 modify_warehouse_and_express(keyword, modify_info): """ keyword:关键字,比如 order_code modify_info: {"仓库": "主仓库", "快递": "EMS",} """ 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(): base.wait_element_click(base.find_xpath_by_tag_name(k, "input")) base.wait_element_click(base.find_xpath(v)) base.change_frame("全部订单框架") base.wait_element_click(base.find_xpath("修改仓库和快递", "确认"))
def test_check_inventory(): base.wait_element(base.find_xpath("显示0库存", "是")) 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 base.wait_element_click(base.get_cell_xpath(1, "商家编码")) base.click_space() base.wait_element_click(base.find_xpath("盘点选中商品库存")) base.change_frame("库存查询框架", "新增盘点单") base.wait_element(base.get_old_cell_input_xpath( 1, "实际数量")).send_keys(Keys.CONTROL + 'a') base.wait_element(base.get_old_cell_input_xpath(1, "实际数量")).send_keys(100) base.change_frame("库存查询框架") base.wait_element_click(base.find_xpath("新增盘点单", "提交并盘点")) base.wait_element(base.find_xpath("显示0库存", "全部")) time.sleep(1) base.wait_element_click(base.find_xpath("显示0库存", "全部")) base.wait_element( base.find_xpath_by_placeholder("商家编码")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_placeholder("商家编码")).send_keys(sku_code) base.wait_table_refresh(base.find_xpath("组合查询"), 1, "货号") inventory = base.wait_element( base.get_cell_xpath(sku_code, ["库存预警值", "库存数"])).text assert inventory == '100'
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_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_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_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_manual_split_order():# TODO:(RUI) 有BUG:全部订单页面,手工拆弹功能,拆包配货页面需要切换新表格组件,图片有问题,没做处理,当前重量字段应该是剩余可拆分数*商品重量,但是目前失效 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, '数量': '2'}, ] 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.change_frame("全部订单框架", "拆包配货") base.wait_element(base.get_old_cell_input_xpath(1, "拆分数量")).send_keys(Keys.CONTROL+'a') base.wait_element(base.get_old_cell_input_xpath(1, "拆分数量")).send_keys("1") 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("提示", "确定")) base.change_frame("全部订单框架") base.wait_element_refresh(element, text) result = base.wait_element(base.get_cell_xpath(order_code, "订单状态")).text assert result == "部分审核" base.wait_element_click(base.get_cell_xpath(order_code, "商品信息")) other_info = order.get_float_sku_info_text(sku_code, "其他信息") assert "已审1件" in other_info
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 modify_seller_memo(keyword, modify_info): """ key_word:关键字,比如order_code modify_info = {"旗帜": "红旗", "备注": "111", "追加": True, "常用备注": "常用备注1", "维护常用卖家备注": "常用备注1,常用备注2,常用备注3"} """ flag_mapping = { "无旗帜": "i[1]", "红旗": "i[2]", "黄旗": "i[3]", "绿旗": "i[4]", "蓝旗": "i[5]", "紫旗": "i[6]", } with base.wait_refresh(base.get_cell_xpath(keyword, "卖家备注")) as e: base.wait_element_click(base.find_xpath("修改&标记")) base.wait_element(base.find_xpath("修改&标记", "修改备注")) time.sleep(1) base.wait_element_click(base.find_xpath("修改&标记", "修改备注")) for k, v in modify_info.items(): if k == "旗帜": base.wait_element( base.find_xpath_by_tag_name("不修改", flag_mapping[v])) time.sleep(1) base.wait_element_click( base.find_xpath_by_tag_name("不修改", flag_mapping[v])) elif k == "备注": base.wait_element( base.find_xpath_by_tag_name( "修改备注", "textarea")).send_keys(Keys.CONTROL + 'a') base.wait_element( base.find_xpath_by_tag_name("修改备注", "textarea")).send_keys(v) elif k == "追加": element = base.wait_element( base.find_xpath_by_inner_tag_name("是否追加备注", "input")) is_select = element.is_selected() 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_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.wait_element_click(base.find_xpath("修改备注", "保存"))
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("修改订单便签", "保存"))
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_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 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 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_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_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 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("是否终结", "确定"))