示例#1
0
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
示例#4
0
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
示例#5
0
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("修改仓库和快递", "确认"))
示例#13
0
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
示例#20
0
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("是否终结", "确定"))