class TestMyGoods(unittest.TestCase):
    def setUp(self):
        self.driver = Pyse('firefox')
        self.driver.open(get_url("home_page"))
        autolog.info("登录")
        self.driver.click(get_element("login_page", "switch_button_loc"))
        current_handle = self.driver.switch_window()
        self.driver.send_keys(get_element("login_page", "username_input_loc"),
                              "15881122294")
        self.driver.send_keys(get_element("login_page", "password_input_loc"),
                              "Xian1016")
        self.driver.send_keys(
            get_element("login_page", "verifyCode_input_loc"), "8888")
        self.driver.click(get_element("login_page", "login_button_loc"))
        time.sleep(2)
        result_handle = self.driver.all_window_handles()
        self.assertNotIn(current_handle, result_handle, "登录失败,登录窗口未关闭!")
        self.driver.switch_to_single_window()
        self.driver.click(get_element("home_page", "member_href_loc"))
        self.driver.click(get_element("member_page", "myGoods_href_loc"))
        time.sleep(2)

    '''
    case:待提交商品-检查数据
    expected:
    正确加载待提交商品列表,商品信息正确显示
    '''

    def test_myGoods_1_draftGoods_1_data(self):
        autolog.info("切换到待提交商品页面")
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        # 数据库获取待提交商品信息
        draft_goods_sql = "select code,name,tagout_num,harbor,store,price_type,price from cenpur_mall_goods " \
                          "where shop_id = 2 and state = 0"
        sql_draft_goods_list = connect_sql(draft_goods_sql)
        # 获取数据库待提交商品编码列表
        sql_goods_num_list = []
        for i in sql_draft_goods_list:
            sql_goods_num_list.append(i[0])
        # 断言商品条数是否一致
        self.assertEqual(len(sql_goods_num_list),
                         len(draft_goods_list["商品编号"]), "待提交商品列表加载失败")
        for i in draft_goods_list["状态"]:
            self.assertEqual("待提交", i, "商品状态错误")

    '''
    case:待提交商品-可用功能列表
    expected:
    待提交商品可用功能:查看,修改,删除,上架,复制挂牌
    '''

    def test_myGoods_1_draftGoods_2_option(self):
        autolog.info("切换到待提交商品页面")
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        print(draft_goods_list["操作"])
        self.assertIn("查看", draft_goods_list["操作"][0], "待提交商品缺少功能-查看")
        self.assertIn("修改", draft_goods_list["操作"][0], "待提交商品缺少功能-修改")
        self.assertIn("删除", draft_goods_list["操作"][0], "待提交商品缺少功能-删除")
        self.assertIn("上架", draft_goods_list["操作"][0], "待提交商品缺少功能-上架")
        self.assertIn("复制挂牌", draft_goods_list["操作"][0], "待提交商品缺少功能-复制挂牌")
        self.assertNotIn("下架", draft_goods_list["操作"][0], "待提交商品错误功能-下架")
        self.assertNotIn("暂停销售", draft_goods_list["操作"][0], "待提交商品错误功能-暂停销售")
        self.assertNotIn("继续销售", draft_goods_list["操作"][0], "待提交商品错误功能-继续销售")

    '''
    case:待提交商品-查看
    expected:
    跳转商品挂盘页面,商品信息无法编辑
    '''

    def test_myGoods_1_draftGoods_3_view(self):
        autolog.info("切换到待提交商品页面")
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        current_url = self.driver.get_current_url()
        autolog.info("查看商品")
        self.driver.find_element(
            get_element("myGoods_page", "goods_button1_loc")).click()
        skip_url = self.driver.get_current_url()
        self.assertNotEqual(current_url, skip_url, "点击查看,页面未跳转")
        goods_name_input = self.driver.find_element(
            get_element("myGoods_page", "goodsInfo_goodsName_input_loc"))
        goods_name_attr = goods_name_input.get_attribute("disabled")
        self.assertTrue(goods_name_attr, "商品查看页面,商品信息可编辑")

    '''
    case:待提交商品-编辑存草稿
    expected:
    跳转商品编辑页面,可以修改商品信息
    '''

    def test_myGoods_1_draftGoods_4_edit_draft(self):
        autolog.info("切换到待提交商品页面")
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        current_url = self.driver.get_current_url()
        autolog.info("修改商品")
        self.driver.find_element(
            get_element("myGoods_page", "goods_button2_loc")).click()
        time.sleep(1)
        skip_url = self.driver.get_current_url()
        self.assertNotEqual(current_url, skip_url, "点击修改,页面未跳转")
        goods_name_input = self.driver.find_element(
            get_element("myGoods_page", "goodsInfo_goodsName_input_loc"))
        goods_name_input.clear()
        autolog.info("修改商品名称:testEdit")
        goods_name_input.send_keys("testEdit")
        self.assertEqual("testEdit", goods_name_input.get_attribute("value"),
                         "编辑商品名称失败")
        autolog.info("存草稿")
        self.driver.find_element(
            get_element("myGoods_page", "goodsInfo_draft_button_loc")).click()
        autolog.info("切换到待提交商品页面")
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        edit_draft_goods_list = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        self.assertIn("testEdit", edit_draft_goods_list["商品名称"], "编辑商品保存失败")

    '''
    case:待提交商品-编辑上架
    expected:
    商品上架
    '''

    def test_myGoods_1_draftGoods_5_edit_sale(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sale_goods_account_before = len(sale_goods_list_before["商品名称"])
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        self.driver.find_element(
            get_element("myGoods_page", "goods_button2_loc")).click()
        time.sleep(1)
        goods_name_input = self.driver.find_element(
            get_element("myGoods_page", "goodsInfo_goodsName_input_loc"))
        goods_name_input.clear()
        goods_name_input.send_keys("ForTest")
        self.assertEqual("ForTest", goods_name_input.get_attribute("value"),
                         "编辑商品名称失败")
        self.driver.find_element(
            get_element("myGoods_page", "goodsInfo_sale_button_loc")).click()
        time.sleep(2)
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list_after = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sale_goods_account_after = len(sale_goods_list_after["商品名称"])
        self.assertEqual(sale_goods_account_before + 1,
                         sale_goods_account_after, "待提交商品列表加载错误")
        select_sql = "select state from cenpur_mall_goods where shop_id = 2 and name = 'ForTest'"
        goods_status = connect_sql(select_sql)
        self.assertEqual(1, goods_status[0][0], "商品状态错误")
        update_sql = "update cenpur_mall_goods set state = 0 where shop_id = 2 and name = 'ForTest'"
        connect_sql(update_sql)

    '''
    case:待提交商品-删除商品
    expected:
    删除后,商品列表中不显示该商品
    '''

    def test_myGoods_1_draftGoods_6_delete(self):
        all_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        all_goods_account_before = len(all_goods_list_before["商品名称"])
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        delete_goods_name = draft_goods_list_before["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button3_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "删除确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % delete_goods_name
        goods_status = connect_sql(select_sql)
        self.assertEqual(4, goods_status[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "allGoods_button_loc")).click()
        time.sleep(2)
        all_goods_list_after = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        all_goods_account_after = len(all_goods_list_after["商品名称"])
        self.assertEqual(all_goods_account_before - 1, all_goods_account_after,
                         "所有商品列表商品总数有误")
        update_sql = "update cenpur_mall_goods set state = 0 where shop_id=2 and name='%s'" % delete_goods_name
        connect_sql(update_sql)

    '''
    case:待提交商品-复制挂牌
    expected:
    跳转商品编辑页面,存草稿新增一个待提交商品
    '''

    def test_myGoods_1_draftGoods_7_copy(self):
        pass

    '''
    case:待提交商品-上架商品
    expected:
    商品状态改变
    '''

    def test_myGoods_1_draftGoods_8_sale(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sale_goods_accout_before = len(sale_goods_list_before["商品名称"])
        self.driver.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        sale_goods_name = draft_goods_list["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button4_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "上架确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % sale_goods_name
        goods_state = connect_sql(select_sql)
        self.assertEqual(1, goods_state[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list_after = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sale_goods_accout_after = len(sale_goods_list_after["商品名称"])
        self.assertEqual(sale_goods_accout_before + 1, sale_goods_accout_after,
                         "商品上架失败")
        update_sql = "update cenpur_mall_goods set state = 0 where shop_id=2 and name='%s'" % sale_goods_name
        connect_sql(update_sql)

    '''
    case:所有商品-检查数据
    expected:
    所有商品正确加载
    '''

    def test_myGoods_2_allGoods_1_data(self):
        all_goods_sql = "select code,name,tagout_num,harbor,store,price_type,price from cenpur_mall_goods " \
                          "where shop_id = 2 and state != 4"
        sql_all_goods_list = connect_sql(all_goods_sql)
        sql_all_goods_code_list = []
        for i in sql_all_goods_list:
            sql_all_goods_code_list.append(i[0])
        all_goods_list = self.driver.load_table("myGoods_page",
                                                "myGoods_table_data_loc",
                                                "myGoods_table_name_loc")
        self.assertEqual(len(sql_all_goods_code_list),
                         len(all_goods_list["商品编号"]), "所有商品列表加载失败")

    '''
    case:已上架商品-检查数据
    expected:
    正确加载已上架商品列表,商品信息正确显示
    '''

    def test_myGoods_3_saleGoods_1_data(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list = self.driver.load_table("myGoods_page",
                                                 "myGoods_table_data_loc",
                                                 "myGoods_table_name_loc")
        # 数据库获取待提交商品信息
        draft_goods_sql = "select code,name,tagout_num,harbor,store,price_type,price from cenpur_mall_goods " \
                          "where shop_id = 2 and state = 1"
        sql_sale_goods_list = connect_sql(draft_goods_sql)
        # 获取数据库待提交商品编码列表
        sql_goods_num_list = []
        for i in sql_sale_goods_list:
            sql_goods_num_list.append(i[0])
        # 断言商品条数是否一致
        self.assertEqual(len(sql_goods_num_list), len(sale_goods_list["商品编号"]),
                         "已上架商品列表加载失败")
        for i in sale_goods_list["状态"]:
            self.assertEqual("已上架", i, "商品状态错误")

    '''
    case:已上架商品-可用功能列表
    expected:
    已上架商品可用功能:查看,下架,暂停销售,复制挂牌
    '''

    def test_myGoods_3_saleGoods_2_option(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        print(draft_goods_list["操作"])
        self.assertIn("查看", draft_goods_list["操作"][0], "待提交商品缺少功能-查看")
        self.assertIn("下架", draft_goods_list["操作"][0], "待提交商品缺少功能-下架")
        self.assertIn("暂停销售", draft_goods_list["操作"][0], "待提交商品缺少功能-暂停销售")
        self.assertIn("复制挂牌", draft_goods_list["操作"][0], "待提交商品缺少功能-复制挂牌")
        self.assertNotIn("上架", draft_goods_list["操作"][0], "待提交商品错误功能-上架")
        self.assertNotIn("删除", draft_goods_list["操作"][0], "待提交商品错误功能-删除")
        self.assertNotIn("继续销售", draft_goods_list["操作"][0], "待提交商品错误功能-继续销售")
        self.assertNotIn("修改", draft_goods_list["操作"][0], "待提交商品错误功能-修改")

    '''
    case:已上架商品-查看
    expected:
    跳转商品挂盘页面,商品信息无法编辑
    '''

    def test_myGoods_3_saleGoods_3_view(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        current_url = self.driver.get_current_url()
        self.driver.find_element(
            get_element("myGoods_page", "goods_button1_loc")).click()
        skip_url = self.driver.get_current_url()
        self.assertNotEqual(current_url, skip_url, "点击查看,页面未跳转")
        goods_name_input = self.driver.find_element(
            get_element("myGoods_page", "goodsInfo_goodsName_input_loc"))
        input_attr = goods_name_input.get_attribute("disabled")
        self.assertTrue(input_attr, "商品查看页面,商品信息可编辑")

    '''
    case:已上架商品-暂停销售
    expected:
    商品状态变为已暂停
    '''

    def test_myGoods_3_saleGoods_4_pause(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        pause_goods_name = sale_goods_list_before["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button3_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "暂停销售确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        sale_goods_list_after = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        goods_name = sale_goods_list_after["商品名称"][0]
        self.assertNotEqual(pause_goods_name, goods_name, "商品暂停销售失败")
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % pause_goods_name
        goods_state = connect_sql(select_sql)
        self.assertEqual(2, goods_state[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "pauseGoods_button_loc")).click()
        time.sleep(2)
        pause_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        pause_goods_name_list = pause_goods_list["商品名称"]
        self.assertIn(pause_goods_name, pause_goods_name_list, "商品加入已暂停商品列表失败")
        update_sql = "update cenpur_mall_goods set state = 1 where shop_id=2 and name='%s'" % pause_goods_name
        connect_sql(update_sql)

    '''
    case:已上架商品-下架
    expected:
    商品状态变为已下架
    '''

    def test_myGoods_3_saleGoods_5_soldOut(self):
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sold_out_goods_name = sale_goods_list_before["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button2_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "商品下架确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % sold_out_goods_name
        goods_state = connect_sql(select_sql)
        self.assertEqual(3, goods_state[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "soldOutGoods_button_loc")).click()
        time.sleep(2)
        sold_out_goods_list = self.driver.load_table("myGoods_page",
                                                     "myGoods_table_data_loc",
                                                     "myGoods_table_name_loc")
        sold_out_goods_name_list = sold_out_goods_list["商品名称"]
        self.assertIn(sold_out_goods_name, sold_out_goods_name_list,
                      "商品加入已下架商品列表失败")
        update_sql = "update cenpur_mall_goods set state = 1 where shop_id=2 and name='%s'" % sold_out_goods_name
        connect_sql(update_sql)

    '''
    case:已暂停商品-检查数据
    expected:
    正确加载已暂停商品列表,商品信息正确显示
    '''

    def test_myGoods_4_pauseGoods_1_data(self):
        self.driver.find_element(
            get_element("myGoods_page", "pauseGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list = self.driver.load_table("myGoods_page",
                                                 "myGoods_table_data_loc",
                                                 "myGoods_table_name_loc")
        # 数据库获取待提交商品信息
        draft_goods_sql = "select code,name,tagout_num,harbor,store,price_type,price from cenpur_mall_goods " \
                          "where shop_id = 2 and state = 2"
        sql_sale_goods_list = connect_sql(draft_goods_sql)
        # 获取数据库待提交商品编码列表
        sql_goods_num_list = []
        for i in sql_sale_goods_list:
            sql_goods_num_list.append(i[0])
        # 断言商品条数是否一致
        self.assertEqual(len(sql_goods_num_list), len(sale_goods_list["商品编号"]),
                         "已上架商品列表加载失败")
        for i in sale_goods_list["状态"]:
            self.assertEqual("已暂停", i, "商品状态错误")

    '''
    case:已暂停商品-可用功能列表
    expected:
    已暂停商品可用功能:查看,下架,继续销售,复制挂牌
    '''

    def test_myGoods_4_pauseGoods_2_option(self):
        self.driver.find_element(
            get_element("myGoods_page", "pauseGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        print(draft_goods_list["操作"])
        self.assertIn("查看", draft_goods_list["操作"][0], "待提交商品缺少功能-查看")
        self.assertIn("下架", draft_goods_list["操作"][0], "待提交商品缺少功能-下架")
        self.assertIn("继续销售", draft_goods_list["操作"][0], "待提交商品缺少功能-继续销售")
        self.assertIn("复制挂牌", draft_goods_list["操作"][0], "待提交商品缺少功能-复制挂牌")
        self.assertNotIn("上架", draft_goods_list["操作"][0], "待提交商品错误功能-上架")
        self.assertNotIn("暂停销售", draft_goods_list["操作"][0], "待提交商品错误功能-暂停销售")
        self.assertNotIn("修改", draft_goods_list["操作"][0], "待提交商品错误功能-修改")
        self.assertNotIn("删除", draft_goods_list["操作"][0], "待提交商品错误功能-删除")

    '''
    case:已暂停商品-下架商品
    expected:
    商品状态改变,加入已下架列表
    '''

    def test_myGoods_4_pauseGoods_3_soldOut(self):
        self.driver.find_element(
            get_element("myGoods_page", "pauseGoods_button_loc")).click()
        time.sleep(2)
        pause_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sold_out_goods_name = pause_goods_list_before["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button2_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "商品下架确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % sold_out_goods_name
        goods_state = connect_sql(select_sql)
        self.assertEqual(3, goods_state[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "soldOutGoods_button_loc")).click()
        time.sleep(2)
        sold_out_goods_list = self.driver.load_table("myGoods_page",
                                                     "myGoods_table_data_loc",
                                                     "myGoods_table_name_loc")
        sold_out_goods_name_list = sold_out_goods_list["商品名称"]
        self.assertIn(sold_out_goods_name, sold_out_goods_name_list,
                      "商品加入已下架商品列表失败")
        update_sql = "update cenpur_mall_goods set state = 2 where shop_id=2 and name='%s'" % sold_out_goods_name
        connect_sql(update_sql)

    '''
    case:已暂停商品-商品继续销售
    expected:
    商品状态改变,加入已上架列表
    '''

    def test_myGoods_4_pauseGoods_4_keepSale(self):
        self.driver.find_element(
            get_element("myGoods_page", "pauseGoods_button_loc")).click()
        time.sleep(2)
        pause_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        sale_goods_name = pause_goods_list_before["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button3_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "商品继续销售确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % sale_goods_name
        goods_state = connect_sql(select_sql)
        self.assertEqual(1, goods_state[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "saleGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list = self.driver.load_table("myGoods_page",
                                                 "myGoods_table_data_loc",
                                                 "myGoods_table_name_loc")
        sale_goods_name_list = sale_goods_list["商品名称"]
        self.assertIn(sale_goods_name, sale_goods_name_list, "商品加入已上架商品列表失败")
        update_sql = "update cenpur_mall_goods set state = 2 where shop_id=2 and name='%s'" % sale_goods_name
        connect_sql(update_sql)

    '''
     case:已下架商品-检查数据
     expected:
     正确加载已下架商品列表,商品信息正确显示
     '''

    def test_myGoods_5_soldOutGoods_1_data(self):
        self.driver.find_element(
            get_element("myGoods_page", "soldOutGoods_button_loc")).click()
        time.sleep(2)
        sale_goods_list = self.driver.load_table("myGoods_page",
                                                 "myGoods_table_data_loc",
                                                 "myGoods_table_name_loc")
        # 数据库获取待提交商品信息
        draft_goods_sql = "select code,name,tagout_num,harbor,store,price_type,price from cenpur_mall_goods " \
                          "where shop_id = 2 and state = 1"
        sql_sale_goods_list = connect_sql(draft_goods_sql)
        # 获取数据库待提交商品编码列表
        sql_goods_num_list = []
        for i in sql_sale_goods_list:
            sql_goods_num_list.append(i[0])
        # 断言商品条数是否一致
        self.assertEqual(len(sql_goods_num_list), len(sale_goods_list["商品编号"]),
                         "已下架商品列表加载失败")
        for i in sale_goods_list["状态"]:
            self.assertEqual("已下架", i, "商品状态错误")

    '''
    case:已下架商品-可用功能列表
    expected:
    已下架商品可用功能:查看,删除,复制挂牌
    '''

    def test_myGoods_5_soldOutGoods_2_option(self):
        self.driver.find_element(
            get_element("myGoods_page", "soldOutGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.driver.load_table("myGoods_page",
                                                  "myGoods_table_data_loc",
                                                  "myGoods_table_name_loc")
        print(draft_goods_list["操作"])
        self.assertIn("查看", draft_goods_list["操作"][0], "待提交商品缺少功能-查看")
        self.assertIn("删除", draft_goods_list["操作"][0], "待提交商品缺少功能-删除")
        self.assertIn("复制挂牌", draft_goods_list["操作"][0], "待提交商品缺少功能-复制挂牌")
        self.assertNotIn("修改", draft_goods_list["操作"][0], "待提交商品错误功能-修改")
        self.assertNotIn("上架", draft_goods_list["操作"][0], "待提交商品错误功能-上架")
        self.assertNotIn("下架", draft_goods_list["操作"][0], "待提交商品错误功能-下架")
        self.assertNotIn("暂停销售", draft_goods_list["操作"][0], "待提交商品错误功能-暂停销售")
        self.assertNotIn("继续销售", draft_goods_list["操作"][0], "待提交商品错误功能-继续销售")

    '''
    case:已下架商品-删除商品
    expected:
    商品删除后,不再在商品列表中显示
    '''

    def test_myGoods_5_soldOutGoods_2_delete(self):
        all_goods_list_before = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        all_goods_account_before = len(all_goods_list_before["商品名称"])
        self.driver.find_element(
            get_element("myGoods_page", "soldOutGoods_button_loc")).click()
        time.sleep(2)
        sold_out_goods_list = self.driver.load_table("myGoods_page",
                                                     "myGoods_table_data_loc",
                                                     "myGoods_table_name_loc")
        delete_goods_name = sold_out_goods_list["商品名称"][0]
        self.driver.find_element(
            get_element("myGoods_page", "goods_button2_loc")).click()
        button_status = self.driver.is_element_exist(
            get_element("myGoods_page", "confirm_button_loc"))
        self.assertTrue(button_status, "删除确认窗口未弹出")
        self.driver.find_element(
            get_element("myGoods_page", "confirm_button_loc")).click()
        time.sleep(2)
        select_sql = "select state from cenpur_mall_goods where shop_id=2 and name='%s'" % delete_goods_name
        goods_status = connect_sql(select_sql)
        self.assertEqual(4, goods_status[0][0], "商品状态错误")
        self.driver.find_element(
            get_element("myGoods_page", "allGoods_button_loc")).click()
        time.sleep(2)
        all_goods_list_after = self.driver.load_table(
            "myGoods_page", "myGoods_table_data_loc", "myGoods_table_name_loc")
        all_goods_account_after = len(all_goods_list_after["商品名称"])
        self.assertEqual(all_goods_account_before - 1, all_goods_account_after,
                         "所有商品列表商品总数有误")
        update_sql = "update cenpur_mall_goods set state = 0 where shop_id=2 and name='%s'" % delete_goods_name
        connect_sql(update_sql)

    '''
    case:其他-搜索商品
    expected:
    根据搜索关键字显示商品列表
    '''

    def test_myGoods_6_other_1_searchByKey(self):
        all_goods_list = self.driver.load_table("myGoods_page",
                                                "myGoods_table_data_loc",
                                                "myGoods_table_name_loc")
        all_goods_name_list = all_goods_list["商品名称"]
        self.driver.find_element(
            get_element("myGoods_page",
                        "selectGoods_input_loc")).send_keys("ForTest")
        self.driver.find_element(
            get_element("myGoods_page", "selectGoods_button_loc")).click()
        time.sleep(2)
        search_goods_list = self.driver.load_table("myGoods_page",
                                                   "myGoods_table_data_loc",
                                                   "myGoods_table_name_loc")
        search_goods_name_list = search_goods_list["商品名称"]
        for i in search_goods_name_list:
            self.assertIn(i, all_goods_name_list, "搜索结果显示错误")

    def tearDown(self):
        self.driver.quit()
Exemplo n.º 2
0
class TestStoreDeatil(unittest.TestCase):
    def setUp(self):
        self.driver = Pyse('chrome')
        self.driver.open(get_url("shopDetail_page"))
        #登录
        self.driver.login()
        time.sleep(2)

    '''
    项目开始setUp
    登录
    '''

    def test_1_storeImg(self):
        pass
        '''
        src = self.driver.get_attribute(get_element("storeDetail_page", "store_img_loc"),"src")
        if src:
          self.driver.open(str("http://10.82.12.25/centralize-purchase/"+src))
          assert self.driver.get_title()!="404 Not Found"
          # self.assertEqual(self.driver.get_title(), "404 Not Found", "店铺头像打开失败!")
          autolog.info("店铺页面图片展示正常")
        else:
          autolog.info("无法获取src")
          assert False,("获取src失败")       
        '''

    '''
    test_1_storeImg
    店铺图片(头像)展示
    获取图片src并访问
    '''

    def test_2_shopName(self):
        autolog.info("店铺名数据库显示:" + shopName)
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "shopName_text_loc"), shopName)
        autolog.info(text)
        assert text != 0
        # self.assertEqual(text,0,"店铺名与实际不符")
        autolog.info("店铺名正常")

    '''
    test_2_shopName
    店铺名显示,与数据库数据对比
    '''

    def test_3_majorGoods(self):
        '''主营商品展示'''
        autolog.info("主营商品数据库显示:" + majorGoods)
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "majorGoods_text_loc"), majorGoods)
        autolog.info(text)
        assert text == 1
        autolog.info("主营商品信息显示正常")

    '''
    test_3_majorGoods
    主营商品展示,与数据库做对比
    '''

    def test_4_majorType(self):
        '''主营品牌显示'''
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "majorType_text_loc"), majorType)
        autolog.info(text)
        assert text == 1
        autolog.info("主营品牌显示正常")

    '''
    test_4_majorType
    主营品牌显示,与数据库做对比
    '''

    def test_5_mainHarhour(self):
        '''常用港口展示'''
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "mainHarhour_text_loc"),
            mainHarhour)
        autolog.info(text)
        assert text == 1
        autolog.info("主营品牌显示正常")

    '''
    test_5_majorHarhour
    常用港口展示,与数据库做对比
    '''

    def test_6_contacts(self):
        '''联系人展示'''
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "contacts_text_loc"), contacts)
        autolog.info(text)
        assert text == 1
        autolog.info("联系人显示正常")

    '''
    test_6_contacts
    联系人展示,与数据库做对比
    '''

    def test_7_contactsInformation(self):
        '''联系方式'''
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "contactsInformation_text_loc"),
            contactsInformation)
        autolog.info(text)
        assert text == 1
        autolog.info("联系方式显示正常")

    '''
    test_7_contactsInformation
    联系方式展示,与数据库做对比
    '''

    def test_8_qqNumber(self):
        '''qq号码'''
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "qqNumber_text_loc"), qqNumber)
        autolog.info(text)
        assert text != 0
        autolog.info("qq号码显示正常")

    '''
    test_8_qqNumber
    QQ号码展示,与数据库做对比
    '''

    def test_9_1_shopPro(self):
        '''公司介绍信息'''
        text = self.driver.text_in_element(
            get_element("storeDetail_page", "shopPro_text_loc"), shopPro)
        autolog.info(text)
        assert text == 1
        autolog.info("公司介绍信息显示正常")

    '''
    test_9_shopPro
    公司信息展示,与数据库做对比
    '''

    def test_9_2_carAlert(self):
        '''加入购物车-弹窗-去看看按钮跳转购物车页面'''
        try:
            dic = self.driver.load_table("storeDetail_page", "table_data_loc",
                                         "table_name_loc")
            autolog.info(dic)
            self.driver.click(
                get_element("storeDetail_page", "firstLineCar_button_loc"))
            time.sleep(1)
            words = self.driver.get_attribute(
                get_element("storeDetail_page", "alertWords_text_loc"), "text")
            autolog.info(words)
            self.driver.click(
                get_element("storeDetail_page", "alertGoToSee_button_loc"))
            time.sleep(1)
            now_url = self.driver.get_current_url()
            autolog.info(now_url)
            assert now_url == "http://10.82.12.25/centralize-purchase/#/shoppingCart", (
                "未成功跳转页面")
            autolog.info("成功跳转购物车页")
        except:
            error = traceback.format_exc()
            autolog.error(error)
            assert False

    '''
    test_10_carAlert
    加入购物车弹窗
    验证是否能获取到表格信息
    点击第一行数据的加入购物车按钮
    通过弹窗进入购物车页面
    '''

    def test_9_3_collection(self):
        '''加入收藏按钮变色验证'''
        try:
            dic = self.driver.load_table("storeDetail_page", "table_data_loc",
                                         "table_name_loc")
            autolog.info(dic)
            loc = get_element("storeDetail_page",
                              "firstLineCollection_button_loc")
            #点击前
            class1 = self.driver.get_attribute(loc, "class")
            autolog.info("点击收藏前的class:%s" % class1)
            self.driver.click(loc)
            time.sleep(1)
            #点击后
            class2 = self.driver.get_attribute(loc, "class")
            autolog.info("点击收藏后的class%s" % class2)
            assert class2 != class1, ("收藏后未变色")
            autolog.info("成功点击后变色")
        except:
            error = traceback.format_exc()
            autolog.error(error)
            assert False

    '''
    test_11_collection
    点击收藏按钮,验证点击后是否变色(点击前后button的class是否不同)
    '''

    def tearDown(self):
        self.driver.quit()
        autolog.info("tearDown")
class TestAddGoods(unittest.TestCase):
    def setUp(self):
        self.login = Pyse('chrome')
        self.login.open(get_url("home_page"))
        self.login.click(get_element("login_page", "switch_button_loc"))
        current_handle = self.login.switch_window()
        self.login.send_keys(get_element("login_page", "username_input_loc"),
                             "15881122294")
        self.login.send_keys(get_element("login_page", "password_input_loc"),
                             "Xian1016")
        self.login.send_keys(get_element("login_page", "verifyCode_input_loc"),
                             "8888")
        self.login.click(get_element("login_page", "login_button_loc"))
        time.sleep(2)
        result_handle = self.login.all_window_handles()
        self.assertNotIn(current_handle, result_handle, "登录失败,登录窗口未关闭!")
        self.login.switch_to_single_window()
        self.login.click(get_element("home_page", "member_href_loc"))
        self.login.click(get_element("member_page", "addGoods_href_loc"))
        time.sleep(2)

    '''
    case:商品挂盘-入口验证
    我的商品-商品挂盘按钮
    expected:
    成功跳转商品挂盘编辑页面
    '''

    def test_addGoods_1_entry_1_myGoods(self):
        autolog.info("跳转我的商品页面")
        time.sleep(2)
        self.login.click(get_element("member_page", "myGoods_href_loc"))
        time.sleep(2)
        self.assertEqual(get_url("goods_page"), self.login.get_current_url(),
                         "跳转我的商品页面失败!")
        autolog.info("我的商品跳转商品挂盘页面")
        self.login.click(get_element("myGoods_page", "addGoods_button_loc"))
        self.assertEqual(get_url("addGoods_page"),
                         self.login.get_current_url(), "跳转商品挂盘页面失败!")

    '''
    case:商品挂盘-入口验证
    会员中心导航栏-商品挂盘
    expected:
    成功跳转商品挂盘编辑页面
    '''

    def test_addGoods_1_entry_2_addGoods(self):
        autolog.info("跳转我的商品页面")
        time.sleep(2)
        self.login.click(get_element("member_page", "myGoods_href_loc"))
        time.sleep(2)
        autolog.info("会员中心导航栏跳转商品挂盘页面")
        self.login.click(get_element("member_page", "addGoods_href_loc"))
        self.assertEqual(get_url("addGoods_page"),
                         self.login.get_current_url(), "跳转商品挂盘页面失败!")

    '''
    case:商品挂盘-新增-提交表单
    1.挂盘方式
    2.商品类型、船名、商品大类、指标类型、品质指标、产地、币种、商品名、溢短装
    3.截止日期
    4.商品价格、计价方式、发盘量、起订量
    5、支付方式、付款时间、港口或仓库、商品图片上传
    6、后台数据库查询新增商品数据
    expected:
    后台数据库数据新增成功,商品挂盘成功
    '''

    def test_addGoods_1_submit(self):
        ship_name = "珍珠号"
        goods_name = "OnlyTest"
        time.sleep(2)
        self.login.click(get_element("member_page", "addGoods_href_loc"))
        # 选择挂盘方式-普通挂盘
        common_radio = self.login.find_element(
            get_element("addGoods_page", "commonAdd_radio_loc"))
        autolog.info("选择挂盘方式-普通挂盘")
        common_radio.click()
        add_type_is_selected = common_radio.is_selected()
        self.assertTrue(add_type_is_selected, "挂盘方式-普通挂盘选中失败!")
        # 选择商品类型-现货
        actuals_radio = self.login.find_element(
            get_element("addGoods_page", "actuals_radio_loc"))
        autolog.info("选择商品类型-现货")
        actuals_radio.click()
        goodstype_is_selected = actuals_radio.is_selected()
        self.assertTrue(goodstype_is_selected, "商品类型-现货选中失败!")
        # 填写船名:ship_name
        boat_name_text = self.login.find_element(
            get_element("addGoods_page", "shipName_input_loc"))
        autolog.info("填写船名:" + ship_name)
        boat_name_text.send_keys(ship_name)
        self.assertEqual(ship_name, boat_name_text.get_attribute("value"),
                         "船名填写失败!")
        # 选择商品大类-铁矿
        iron_ore_radio = self.login.find_element(
            get_element("addGoods_page", "ironOre_radio_loc"))
        autolog.info("选择商品大类-铁矿")
        iron_ore_radio.click()
        goods_category_is_selected = iron_ore_radio.is_selected()
        self.assertTrue(goods_category_is_selected, "商品大类-铁矿选中失败!")
        # 填写品质指标
        Fe_text = self.login.find_element(
            get_element("addGoods_page", "Fe_input_loc"))
        autolog.info("填写Fe:600")
        Fe_text.send_keys("600")
        self.assertEqual("600", Fe_text.get_attribute("value"), "Fe填写失败!")
        SiO2_text = self.login.find_element(
            get_element("addGoods_page", "SiO2_input_loc"))
        autolog.info("填写SiO2:20")
        SiO2_text.send_keys("20")
        self.assertEqual("20", SiO2_text.get_attribute("value"), "SiO2填写失败!")
        AI2O3_text = self.login.find_element(
            get_element("addGoods_page", "AI2O3_input_loc"))
        autolog.info("填写AI2O3:50")
        AI2O3_text.send_keys("50")
        self.assertEqual("50", AI2O3_text.get_attribute("value"), "AI2O3填写失败!")
        S_text = self.login.find_element(
            get_element("addGoods_page", "S_input_loc"))
        autolog.info("填写S:60")
        S_text.send_keys("60")
        self.assertEqual("60", S_text.get_attribute("value"), "S填写失败!")
        H2O_text = self.login.find_element(
            get_element("addGoods_page", "H2O_input_loc"))
        autolog.info("填写H2O:50")
        H2O_text.send_keys("50")
        self.assertEqual("50", H2O_text.get_attribute("value"), "H2O填写失败!")
        FeO_text = self.login.find_element(
            get_element("addGoods_page", "FeO_input_loc"))
        autolog.info("填写FeO:70")
        FeO_text.send_keys("70")
        self.assertEqual("70", FeO_text.get_attribute("value"), "FeO填写失败!")
        P_text = self.login.find_element(
            get_element("addGoods_page", "P_input_loc"))
        autolog.info("填写P:50")
        P_text.send_keys("50")
        self.assertEqual("50", P_text.get_attribute("value"), "P填写失败!")
        Grade_text = self.login.find_element(
            get_element("addGoods_page", "Grade_input_loc"))
        autolog.info("填写粒度指标:50")
        Grade_text.send_keys("50")
        self.assertEqual("50", Grade_text.get_attribute("value"), "粒度指标填写失败!")
        # 填写商品名:goods_name
        goods_name_text = self.login.find_element(
            get_element("addGoods_page", "goodsName_input_loc"))
        autolog.info("填写商品名:" + goods_name)
        goods_name_text.send_keys(goods_name)
        self.assertEqual(goods_name, goods_name_text.get_attribute("value"),
                         "商品名填写失败!")
        # 填写溢短装比例:10%
        more_or_less_text = self.login.find_element(
            get_element("addGoods_page", "moreOrLess_input_loc"))
        autolog.info("填写溢短装比例:" + "10%")
        more_or_less_text.send_keys("10%")
        self.assertEqual("10%", more_or_less_text.get_attribute("value"),
                         "溢短装比例填写失败!")
        # 填写截止日期:Today
        today_time = time.strftime('%Y-%m-%d', time.localtime(time.time()))
        end_time_text = self.login.find_element(
            get_element("addGoods_page", "endTime_input_loc"))
        end_time_text.click()
        time.sleep(2)
        autolog.info("填写截止日期:" + today_time)
        self.login.find_element(
            get_element("addGoods_page", "endTime_button_loc")).click()
        self.assertEqual(today_time, end_time_text.get_attribute("value"),
                         "截止时间填写失败!")
        # 填写商品价格:20
        goods_price_text = self.login.find_element(
            get_element("addGoods_page", "goodsPrice_input_loc"))
        autolog.info("填写商品价格:" + "20")
        goods_price_text.send_keys("20")
        self.assertEqual("20", goods_price_text.get_attribute("value"),
                         "商品价格填写失败!")
        # 填写发盘量:5000
        stock_text = self.login.find_element(
            get_element("addGoods_page", "stock_input_loc"))
        autolog.info("填写发盘量:" + "5000")
        stock_text.send_keys("5000")
        self.assertEqual("5000", stock_text.get_attribute("value"), "发盘量填写失败!")
        # 填写起订量:200
        mini_order_text = self.login.find_element(
            get_element("addGoods_page", "miniOrder_input_loc"))
        autolog.info("填写发盘量:" + "200")
        mini_order_text.send_keys("200")
        self.assertEqual("200", mini_order_text.get_attribute("value"),
                         "发盘量填写失败!")
        # 选择支付方式-在线支付
        pay_online_checkbox = self.login.find_element(
            get_element("addGoods_page", "payOnline_checkbox_loc"))
        autolog.info("选择支付方式-在线支付")
        pay_online_checkbox.click()
        pay_online_is_selected = pay_online_checkbox.is_selected()
        self.assertTrue(pay_online_is_selected, "选择支付方式-在线支付选中失败!")
        # 选择付款时间-分期付款
        pay_advance_checkbox = self.login.find_element(
            get_element("addGoods_page", "payAdvance_checkbox_loc"))
        autolog.info("选择付款时间-分期付款")
        pay_advance_checkbox.click()
        pay_advance_is_selected = pay_advance_checkbox.is_selected()
        self.assertTrue(pay_advance_is_selected, "选择付款时间-分期付款选中失败!")
        # 选择港口或仓库-港口
        port_radio = self.login.find_element(
            get_element("addGoods_page", "port_radio_loc"))
        autolog.info("选择港口或仓库-港口")
        port_radio.click()
        port_is_selected = port_radio.is_selected()
        self.assertTrue(port_is_selected, "选择港口或仓库-港口选中失败!")
        # 上传商品图片
        autolog.info("上传商品图片:")
        upload_file = self.login.find_element(
            get_element("addGoods_page", "uploadPic_file_loc"))
        upload_file.send_keys("D:\\3、Work\\bdfintAutoTest\\pic\\1.jpg")
        time.sleep(2)
        status = self.login.is_element_exist(
            get_element("addGoods_page", "uploadPic_review_button_loc"))
        self.assertTrue(status, "图片上传失败")
        autolog.info("预览上传图片")
        self.login.find_element(
            get_element("addGoods_page",
                        "uploadPic_review_button_loc")).click()
        self.login.find_element(
            get_element("addGoods_page",
                        "uploadPic_review_close_button_loc")).click()
        time.sleep(2)
        autolog.info("删除上传图片:")
        self.login.find_element(
            get_element("addGoods_page",
                        "uploadPic_delete_button_loc")).click()
        autolog.info("再次上传商品图片:")
        upload_file = self.login.find_element(
            get_element("addGoods_page", "uploadPic_file_loc"))
        upload_file.send_keys("D:\\3、Work\\bdfintAutoTest\\pic\\1.jpg")
        time.sleep(2)
        status = self.login.is_element_exist(
            get_element("addGoods_page", "uploadPic_review_button_loc"))
        self.assertTrue(status, "图片上传失败")
        # 提交表单
        autolog.info("商品存草稿:")
        self.login.click(get_element("addGoods_page", "draft_button_loc"))
        time.sleep(2)
        # 查询数据库,验证数据插入情况
        sql = "select name,state from cenpur_mall_goods where shop_id = 2 and name = 'OnlyTest'"
        added_goods_status = connect_sql(sql)
        print(added_goods_status)
        self.assertNotEqual(0, len(added_goods_status), "新增商品插入数据库失败")
        # status:0-待提交
        self.assertEqual(0, added_goods_status[0][1], "商品状态错误")
        # 验证前端新增商品显示情况
        autolog.info("切换至待提交商品页面")
        self.login.find_element(
            get_element("myGoods_page", "draftGoods_button_loc")).click()
        time.sleep(2)
        draft_goods_list = self.login.load_table("myGoods_page",
                                                 "myGoods_table_data_loc",
                                                 "myGoods_table_name_loc")
        self.assertIn(goods_name, draft_goods_list['商品名称'], "新增商品存草稿失败")
        delete_sql = "delete from cenpur_mall_goods where shop_id = 2 and name = '%s'" % goods_name
        connect_sql(delete_sql)

    '''
    case:商品挂盘-新增-表单必填项验证-船名
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_1_shipName(self):
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "shipName_text_loc"))
        self.assertEqual(True, result_before, "必填项提示信息未显示-船名")
        autolog.info("填写船名:小螺号")
        self.login.find_element(
            get_element("addGoods_page",
                        "shipName_input_loc")).send_keys("小螺号")
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "shipName_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-船名")

    '''
    case:商品挂盘-新增-表单必填项验证-商品名
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_2_goodsName(self):
        autolog.info("挂盘商品提交")
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "goodsName_text_loc"))
        autolog.info("填写商品名称:HelloWorld")
        self.assertEqual(True, result_before, "必填项提示信息未显示-商品名")
        self.login.find_element(
            get_element("addGoods_page",
                        "goodsName_input_loc")).send_keys("HelloWorld")
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "goodsName_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-商品名")

    '''
    case:商品挂盘-新增-表单必填项验证-商品价格
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_3_goodsPrice(self):
        autolog.info("挂盘商品提交")
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "goodsPrice_text_loc"))
        self.assertEqual(True, result_before, "必填项提示信息未显示-商品价格")
        autolog.info("填写商品价格:20")
        self.login.find_element(
            get_element("addGoods_page",
                        "goodsPrice_input_loc")).send_keys("20")
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "goodsPrice_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-商品价格")

    '''
    case:商品挂盘-新增-表单必填项验证-发盘量
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_4_stock(self):
        autolog.info("挂盘商品提交")
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "stock_text_loc"))
        self.assertEqual(True, result_before, "必填项提示信息未显示-发盘量")
        autolog.info("填写商品发盘量:5000")
        self.login.find_element(get_element(
            "addGoods_page", "stock_input_loc")).send_keys("5000")
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "stock_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-发盘量")

    '''
    case:商品挂盘-新增-表单必填项验证-起订量
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_5_miniOrder(self):
        autolog.info("挂盘商品提交")
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "miniOrder_text_loc"))
        self.assertEqual(True, result_before, "必填项提示信息未显示-起订量")
        autolog.info("填写商品起订量:100")
        self.login.find_element(
            get_element("addGoods_page",
                        "miniOrder_input_loc")).send_keys("100")
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "miniOrder_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-起订量")

    '''
    case:商品挂盘-新增-表单必填项验证-支付方式
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_6_payType(self):
        autolog.info("挂盘商品提交")
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "payType_text_loc"))
        self.assertEqual(True, result_before, "必填项提示信息未显示-支付方式")
        autolog.info("选择商品支付方式:在线支付")
        self.login.click(get_element("addGoods_page",
                                     "payOnline_checkbox_loc"))
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "payType_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-支付方式")

    '''
    case:商品挂盘-新增-表单必填项验证-支付时间
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_7_payTime(self):
        autolog.info("挂盘商品提交")
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        result_before = self.login.is_element_exist(
            get_element("addGoods_page", "payTime_text_loc"))
        self.assertEqual(True, result_before, "必填项提示信息未显示-支付时间")
        autolog.info("选择支付时间:分期付款")
        self.login.click(
            get_element("addGoods_page", "payAdvance_checkbox_loc"))
        autolog.info("挂盘商品提交")
        self.login.find_element(
            get_element("addGoods_page", "submit_button_loc")).click()
        time.sleep(2)
        result_after = self.login.is_element_exist(
            get_element("addGoods_page", "payTime_text_loc"))
        self.assertEqual(False, result_after, "必填项提示信息显示错误-支付时间")

    '''
    case:商品挂盘-新增-表单必填项验证-截止时间
    expected:
    表单填写不全,提交失败
    '''

    def test_addGoods_2_required_8_endTime(self):
        self.login.find_element(
            get_element("addGoods_page",
                        "shipName_input_loc")).send_keys("TestTime")
        self.login.find_element(
            get_element("addGoods_page", "ironOre_radio_loc")).click()
        self.login.find_element(get_element("addGoods_page",
                                            "Fe_input_loc")).send_keys("30")
        self.login.find_element(get_element("addGoods_page",
                                            "SiO2_input_loc")).send_keys("20")
        self.login.find_element(get_element("addGoods_page",
                                            "AI2O3_input_loc")).send_keys("50")
        self.login.find_element(get_element("addGoods_page",
                                            "S_input_loc")).send_keys("50")
        self.login.find_element(get_element("addGoods_page",
                                            "P_input_loc")).send_keys("50")
        self.login.find_element(get_element("addGoods_page",
                                            "H2O_input_loc")).send_keys("50")
        self.login.find_element(get_element("addGoods_page",
                                            "FeO_input_loc")).send_keys("50")
        self.login.find_element(get_element("addGoods_page",
                                            "Grade_input_loc")).send_keys("50")
        self.login.find_element(
            get_element("addGoods_page",
                        "goodsName_input_loc")).send_keys("HelloWorld")
        self.login.find_element(
            get_element("addGoods_page",
                        "goodsPrice_input_loc")).send_keys("20")
        self.login.find_element(get_element(
            "addGoods_page", "stock_input_loc")).send_keys("5000")
        self.login.find_element(
            get_element("addGoods_page",
                        "miniOrder_input_loc")).send_keys("100")
        self.login.find_element(
            get_element("addGoods_page", "payOnline_checkbox_loc")).click()
        self.login.find_element(
            get_element("addGoods_page", "payAdvance_checkbox_loc")).click()
        submit_before_url = self.login.get_current_url()
        # 提交表单
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        submit_after_url = self.login.get_current_url()
        self.assertEqual(submit_before_url, submit_after_url,
                         "页面跳转,必填项未做限制-截止时间")
        autolog.info("选择截止时间:今天")
        self.login.find_element(
            get_element("addGoods_page", "endTime_input_loc")).click()
        time.sleep(2)
        self.login.find_element(
            get_element("addGoods_page", "endTime_button_loc")).click()
        self.login.click(get_element("addGoods_page", "submit_button_loc"))
        time.sleep(2)
        submit_after_url2 = self.login.get_current_url()
        self.assertNotEqual(submit_after_url, submit_after_url2,
                            "页面未跳转,提交表单失败")
        delete_sql = "delete from cenpur_mall_goods where name = 'TestTime'"
        connect_sql(delete_sql)

    '''
    case:商品挂盘-新增-期货
    expected:
    期货对应的属性正确显示:装船期、预计离港日、预计到港日、提单日
    '''

    def test_addGoods_3_other_1_futures(self):
        autolog.info("选择商品类型:期货")
        self.login.find_element(
            get_element("addGoods_page", "futures_radio_loc")).click()
        start_time_status = self.login.is_element_exist(
            get_element("addGoods_page", "shipment_startTime_input_loc"))
        futures_text_status = self.login.is_element_exist(
            get_element("addGoods_page", "futures_text_loc"))
        self.assertTrue(start_time_status, "装船期开始时间不显示")
        self.assertTrue(futures_text_status, "必填项提示文本未显示")

    '''
    case:商品挂盘-新增-币种与商品价格单位关联
    expected:
    当币种变化时,商品价格单位自动关联变化
    '''

    def test_addGoods_3_other_2_currency(self):
        current_text = self.login.find_element(
            get_element("addGoods_page", "currency_input_loc")).text
        price_num_text_before = self.login.find_element(
            get_element("addGoods_page", "goodsPriceUnit_input_loc")).text
        autolog.info("选择币种:美元")
        self.login.find_element(
            get_element("addGoods_page", "currency_input_loc")).click()
        self.login.find_element(
            get_element("addGoods_page", "currency_select_loc")).click()
        choose_text = self.login.find_element(
            get_element("addGoods_page", "currency_input_loc")).text
        self.assertNotEqual(current_text, choose_text, "币种选择失败")
        price_num_text_after = self.login.find_element(
            get_element("addGoods_page", "goodsPriceUnit_input_loc")).text
        self.assertNotEqual(price_num_text_before, price_num_text_after,
                            "商品价格单位与币种关联失败")

    '''
    case:商品挂盘-新增-商品价格单位与发盘量、起订量单位关联
    expected:
    当商品价格单位变化时,发盘量和起订量单位自动关联变化
    '''

    def test_addGoods_3_other_3_priceNum(self):
        price_num_text_before = self.login.find_element(
            get_element("addGoods_page", "goodsPriceUnit_input_loc")).text
        stock_num_text_before = self.login.find_element(
            get_element("addGoods_page", "stockNum_text_loc")).text
        mini_order_num_text_before = self.login.find_element(
            get_element("addGoods_page", "miniOrderNum_text_loc")).text
        autolog.info("选择商品价格单位:美元/湿吨")
        self.login.find_element(
            get_element("addGoods_page", "goodsPriceUnit_input_loc")).click()
        self.login.find_element(
            get_element("addGoods_page", "goodsPriceUnit_select_loc")).click()
        price_num_text_after = self.login.find_element(
            get_element("addGoods_page", "goodsPriceUnit_input_loc")).text
        self.assertNotEqual(price_num_text_before, price_num_text_after,
                            "商品价格单位选择失败")
        stock_num_text_after = self.login.find_element(
            get_element("addGoods_page", "stockNum_text_loc")).text
        mini_order_num_text_after = self.login.find_element(
            get_element("addGoods_page", "miniOrderNum_text_loc")).text
        self.assertNotEqual(stock_num_text_before, stock_num_text_after,
                            "发盘量单位关联失败")
        self.assertNotEqual(mini_order_num_text_before,
                            mini_order_num_text_after, "起订量单位关联失败")

    '''
    case:商品挂盘-新增-无收货地址时新增地址
    expected:
    新增地址按钮,新增地址弹窗
    '''

    def test_addGoods_3_other_4_addAddress(self):
        delete_sql = "delete from cenpur_user_address " \
                     "where user_id='26878e6d32df4e1c95b579af43990da4' and address_type=2"
        connect_sql(delete_sql)
        autolog.info("选择仓库")
        self.login.find_element(get_element("addGoods_page",
                                            "depot_radio_loc")).click()
        add_address_button_status = self.login.is_element_exist(
            get_element("addGoods_page", "depot_addAddress_button_loc"))
        self.assertTrue(add_address_button_status, "添加地址按钮不显示")
        autolog.info("添加发货地址")
        self.login.find_element(
            get_element("addGoods_page",
                        "depot_addAddress_button_loc")).click()
        add_address_window_status = self.login.is_element_exist(
            get_element("addGoods_page", "depot_addAddress_window_loc"))
        self.assertTrue(add_address_window_status, "添加地址窗口未弹出")
        self.login.find_element(
            get_element(
                "addGoods_page",
                "depot_addAddress_consignor_input_loc")).send_keys("测试专用")
        detail_address = "天府广场东侧速8酒店12层"
        self.login.find_element(
            get_element(
                "addGoods_page",
                "depot_addAddress_detail_input_loc")).send_keys(detail_address)
        self.login.find_element(
            get_element(
                "addGoods_page",
                "depot_addAddress_companyName_input_loc")).send_keys("Tencent")
        self.login.find_element(
            get_element("addGoods_page",
                        "depot_addAddress_depot_input_loc")).send_keys("成都港")
        self.login.find_element(
            get_element("addGoods_page",
                        "depot_addAddress_contact_input_loc")).send_keys("110")
        autolog.info("发货地址提交")
        self.login.find_element(
            get_element("addGoods_page",
                        "depot_addAddress_confirm_button_loc")).click()
        time.sleep(2)
        add_address_window_status = self.login.is_element_exist(
            get_element("addGoods_page", "depot_addAddress_window_loc"))
        self.assertFalse(add_address_window_status, "添加地址窗口未关闭")
        address_status = self.login.is_element_exist(
            get_element("addGoods_page", "depot_addressList_first_loc"))
        self.assertTrue(address_status, "加载收货地址失败")
        connect_sql(delete_sql)

    def tearDown(self):
        self.login.quit()
Exemplo n.º 4
0
class TestLogin(unittest.TestCase):
    def setUp(self):
        self.page_name = "login_page"
        self.login = Pyse('chrome')
        self.login.open(get_url("home_page"))

    '''
    case:用户登录-正确登录
    1.正确匹配的用户名、密码
    2.登录跳转
    expected:
    登录成功,跳转首页
    '''

    def test_1_login_1_normal(self):
        self.login.click(get_element("login_page", "switch_button_loc"))
        autolog.info("弹出登录窗口")
        current_handle = self.login.switch_window()
        autolog.info("输入用户名:")
        self.login.send_keys(get_element("login_page", "username_input_loc"),
                             "15881122294")
        autolog.info("输入密码:")
        self.login.send_keys(get_element("login_page", "password_input_loc"),
                             "Xian1016")
        autolog.info("输入验证码:")
        self.login.send_keys(get_element("login_page", "verifyCode_input_loc"),
                             "8888")
        autolog.info("确认登录")
        self.login.click(get_element("login_page", "login_button_loc"))
        time.sleep(2)
        result_handle = self.login.all_window_handles()
        self.assertNotIn(current_handle, result_handle, "登录失败,登录窗口未关闭!")
        self.login.switch_to_single_window()

    '''
    case:用户登录-必填项验证
    1.用户名、密码分别为空
    2.用户名、密码同时为空
    expected:
    登录失败,显示对应提示信息
    '''
    # def test_1_login_2_required(self):
    '''
    case:用户登录-无效用户名或密码
    1、错误用户名
    2.错误密码
    expected:
    登录失败,显示对应提示信息
    '''
    # def test_1_login_3_invalid(self):
    '''
    case:用户登录-自动登录
    1.正确登录
    2.二次登录验证
    expected:
    二次登录时自动登录成功
    '''

    # def test_1_login_4_auto_login(self):

    def tearDown(self):
        self.login.quit()