python-脚本实现登录电商下单

一、步骤

1.先从数据库表user_login,查询出正常状态的客户,并导出至excel中

2.思路:模拟客户下单流程

(1)首先客户需要登录到电商平台,登录的参数有用户名、密码,所需的有效数据已导出至excel,所以,此处的两个参数需要从表格中去取,用到xlrd模块读取数据

(2)客户下单,需要先查询到商品的价格,需请求“查找价格”的接口,得到某个商品的价格

(3)提交订单前提是购物车中有该商品,所以要将查询到的商品加入到购物车,请求加入购物车的接口

(4)下单需要指定某个商品,即查找到购物车里某个商品下单(得到购物车列表的指定id下单)

(5)提交订单,返回订单信息

3.代码实现

(1)读取excel部分

# coding:utf-8
import xlrd
class ExcelUtil:
    def __init__(self, excel_path, sheet_name):
        self.data = xlrd.open_workbook(excel_path)
        self.table = self.data.sheet_by_name(sheet_name)

        # 获取第一行作为key值
        self.keys = self.table.row_values(0)

        # 获取总行数
        self.rowNum = self.table.nrows

        # 获取总列数
        self.colNum = self.table.ncols


    def dict_data(self):
        if self.rowNum <= 1:
            print("总行数小于1")
        else:
            r = []  # 存放读取数据
            j = 1
            for i in range(self.rowNum - 1):
                s = {}  # 存放每一行的键值对

                # 从第二行取对应的value值
                values = self.table.row_values(j)

                for x in range(self.colNum):
                    s[self.keys[x]] = values[x]
                r.append(s)
                j += 1
            return r

(2)提交订单脚本

# coding:utf-8
from readLoginData import ExcelUtil
import requests
class InsertOrders:
    # 初始化设置session和headers
    def __init__(self):
        self.session = requests.session()
        # headers 信息用fiddler抓包获取
        self.headers = {
            "Referer": "http://192.168.x.xxx/xxx/xxx/login.html",
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
        }

    # 登录电商平台,参数从表格取出,表格数据为数据库查询出符合购买要求的客户登录id和密码
    def login(self, username, password):
        url = "http://192.168.x.xxx/xxx/xxx/login"  # 登录url
        data = {
            "USERNAME": username,
            "PASSWORD": password
        }
        print(username,password)
        login_result = self.session.post(url, data=data,headers=self.headers)
        return login_result.json()

    # 查找价格
    def findProjectPrice(self):
        find_price_url = "http://192.168.x.xxx/xxx/xxx/findCommodityDetail" # 查找价格url
        data = {
            "modelId": "pigiron_Z14",
            "syFacilityTypeId": "CK001",
            "priceListItemId": "10000",
            "partyId": "12674",
            "_init_modelId": "pigiron_Z14",
            "_init_partyId": "12674",
            "_init_syFacilityTypeId": "CK001"
        }
        find_price_result = self.session.post(find_price_url, data=data,headers=self.headers).json()
        cashPrice = find_price_result["baseInfo"]["cashPrice"]
        return cashPrice

    # 加入购物车
    def addShopCar(self):
        shop_car_url = "http://192.168.x.xxx/xxx/xxx/insertShopCar" # 加入购物车url
        price = self.findProjectPrice()
        data = {
            "status":"LAST",
            "priceListItemId":"10000",
            "price":price,
            "payMethod":"PAYTYPE1",
            "otherMethod":"",
            "sendMethod":"CK001",
            "getMethod":"SETTLEMENT1",
            "buyMethod":"CARTYPE001/1",
            "totalCarNum":"1",
            "totalNum":"32"
        }
        addshopcar_result = self.session.post(shop_car_url, data=data,headers=self.headers).json()
        shop_car_id = addshopcar_result["shopCarId"]
        return shop_car_id

    # 提交订单
    def insertOrders(self):
        insert_order_url="http://192.168.x.xxx/xxx/xxx/insertOrder"  # 提交订单url
        json_arr_str = self.addShopCar()
        data = {
            "useDisStyle":"NO",
            "jsonArrStr":"["+"'%s'"%json_arr_str+"]",
            "futureDate":"2018-11-12"
        }
        insertorder_result = self.session.post(insert_order_url, data=data,headers=self.headers).json()
        return insertorder_result

if __name__ == '__main__':
    username_list = ExcelUtil("D:\\Users\suner\sun\login.xlsx", "Sheet1").dict_data()

    """
    数据为字典的列表{'password': '123456', 'username': '10011'},, {'password': '123456', 'username': '10021'}
    """
    print(username_list)

    # 循环取出列表中的每一个值(字典),获取它的用户名和密码
    for user_info in username_list:
        username = user_info["username"]
        password = user_info["password"]
        order = InsertOrders()
        order.login(username, password)

        result = order.insertOrders()
        result_code = result['orderCode']
        print("客户下单成功:{}".format(username), "订单编号为:{}".format(result_code))

(3)结果

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/84098881