Пример #1
0
    def place_order(self, isgift=True):
        """首页下单"""
        logging.info(format_str('place_order'))
        if isgift:
            sleep(0.5)
            self.add_gift()

        self.click(ORDER['下单'])
        self.click(ORDER['选择客户'])
        self.switch_to_native()  # 切换到APP视图做swipe操作
        self.swipe_up()  # 上滑加载更多客户
        sleep(3)
        self.switch_to_webview()  # 切换到H5视图继续后面的操作

        customers = self.find_elements(ORDER['客户'])  # 获取客户列表
        random.choice(customers).click()
        sleep(0.5)

        while True:
            if self.element_is_dispalyed(ORDER['侧边客户列表']):
                logging.warning('{:*^56}'.format(' 重新选择客户 '))
                random.choice(customers).click()
            else:
                break

        self.click(ORDER['提交订单'])
        sleep(0.5)
        self.click(ORDER['下单二次确认'])
        sleep(0.5)
        self.click(ORDER['跳转订单列表'])
Пример #2
0
    def free_refund(self):
        """自由退货"""
        logging.info(format_str('free_refund'))

        self.click(REFUND['自由退货'])
        self.add_product(random.randint(1, 3))
        self.click(REFUND['下一步'])
        # sleep(0.5)
        self.click(ORDER['选择客户'])
        sleep(0.5)
        self.switch_to_native()  # 切换到APP视图做swipe操作
        self.swipe_up()  # 上滑加载更多客户
        sleep(3)
        self.switch_to_webview()  # 切换到H5视图继续后面的操作

        customers = self.find_elements(ORDER['客户'])  # 获取客户列表
        random.choice(customers).click()
        sleep(0.5)

        while True:
            if self.element_is_dispalyed(ORDER['侧边客户列表']):
                logging.warning('{:*^56}'.format(' 重新选择客户 '))
                random.choice(customers).click()
            else:
                break

        self.click(REFUND['退货仓库'])
        sleep(0.5)
        warehouses = self.find_elements(PUBLIC['列表'])
        random.choice(warehouses).click()
        self.click(REFUND['下一步'])
        # sleep(0.5)
        self.click(REFUND['确定'])
        # sleep(0.5)
        self.click(REFUND['查看订单'])
Пример #3
0
    def upload_photo(self, flag=None):
        """
        从相册选择文件上传
        :param flag: 用来标识是否是企业微信,默认微信
        """
        logging.info(format_str('upload_photo'))

        for i in range(random.randint(1, 4)):
            self.click(PUBLIC['新增照片'])
            time.sleep(1)
            self.switch_to_native()  # 切换到NATIVE_APP视图控制照片选择
            if flag:
                self.click(PUBLIC['选择其他方式上传'])  # 企业微信选择其他方式上传
                self.click(PUBLIC['企业微信步骤二'])  # 企业微信步骤二
            else:
                self.click(PUBLIC['选择从文件上传'])  # 微信选择从文件上传图片
            time.sleep(1)
            photos = self.find_elements(PUBLIC['获取照片列表'])
            random.choice(photos).click()
            time.sleep(3)  # 等待图片上传完成

            self.switch_to_webview()  # 切换到H5视图继续操作
            time.sleep(0.5)
            if self.is_exists(PUBLIC['关闭按钮']):
                self.click(PUBLIC['关闭按钮'])
Пример #4
0
    def add_product(self, kinds=1):
        """
        添加商品到购物车
        :param kinds: 商品种类,默认为1
        """
        # 查看合计数量,如果数量不为0,先进购物车清空商品
        content = self.find_element(ORDER['合计数量']).text
        if content[1] != '0':
            self.empty_cart()

        logging.info(format_str('add_product'))
        # 选择商品
        sleep(0.5)
        big = self.find_elements(ORDER['大单位输入框'])  # 获取所有大单位输入框
        small = self.find_elements(ORDER['小单位输入框'])  # 获取所有大单位输入框
        if big:
            for k in range(kinds):
                sleep(1)
                _i = random.randint(1, len(big) - 1)
                big[_i].click()
                self.clear_and_sendkeys(ORDER['输入商品数量'], random.randint(0, 3))
                self.click(ORDER['确认输入'])

                sleep(0.5)
                small[_i].click()
                self.clear_and_sendkeys(ORDER['输入商品数量'], random.randint(1, 3))
                self.click(ORDER['确认输入'])
        sleep(1)
Пример #5
0
 def clear_drafts(self):
     """清空草稿箱"""
     if self.element_is_dispalyed(PUBLIC['草稿箱角标']):
         logging.info(format_str('start clear drafts...'))
         self.click(PUBLIC['草稿箱'])
         self.click(PUBLIC['清空草稿箱'])
         self.click(PUBLIC['确定按钮'])
         self.return_home_page()
Пример #6
0
    def choose_expense(self):
        """选择费用明细"""
        logging.info(format_str('choose_expense'))

        self.click(ACTIVITY['费用明细'])
        sleep(1)
        costs = self.find_elements(ACTIVITY['列表'])
        random.choice(costs).click()
        self.click(ACTIVITY['确定'])
Пример #7
0
    def choose_activity(self):
        """选择活动"""
        logging.info(format_str('choose_activity'))

        self.click(ACTIVITY['活动'])
        sleep(1)
        acts = self.find_elements(ACTIVITY['列表'])
        random.choice(acts).click()
        sleep(1)
Пример #8
0
    def open_qywx_ccloud(self):
        """企业微信进入'慧订货'"""
        logging.info(format_str('open_qywx_ccloud'))

        self.click(PUBLIC['工作台'])
        self.click(PUBLIC['慧订货'])
        self.switch_to_webview()  # 切换到h5视图
        self.choose_accout()
        self.clear_drafts()
Пример #9
0
    def choose_activity_supplement_type(self, index):
        """进入营销补录并选择活动类型"""
        logging.info(format_str('choose_activity_supplement_type'))

        # 进入营销推广
        self.click(ACTIVITY['营销补录'])
        sleep(0.5)
        self.find_elements(ACTIVITY['选择营销活动'])[index].click()
        sleep(1)
Пример #10
0
 def batch_output(self):
     """APP批量出库"""
     logging.info(format_str('batch_outbound'))
     order_list = self.filter_order()
     if order_list:
         self.click(OUTPUT['批量出库'])
         sleep(1)
         self.click(OUTPUT['二次确认'])
         sleep(5)
     else:
         logging.warning('{:*^56}'.format(' 没有待出库的订单 '))
Пример #11
0
    def new_customer(self, flag=None):
        """新增客户"""
        logging.info(format_str('new_customer'))

        self.click(CUSTOMER['新增客户'])
        sleep(0.5)

        subname = ['小店', '副食', '酒楼', '批发', '烟酒', '便利店', '小卖部', '超市', '百货']
        customer_name = create_name() + random.choice(subname)
        self.clear_and_sendkeys(CUSTOMER['客户名'], customer_name)
        self.clear_and_sendkeys(CUSTOMER['联系人'], create_name())
        self.clear_and_sendkeys(CUSTOMER['电话'], create_phone())

        self.click(CUSTOMER['客户类型'])
        sleep(0.5)
        subtype = ['零售终端', '批发', '餐饮', '其他', '商超']
        types = self.find_elements(CUSTOMER['列表'])
        while True:
            t = random.choice(types)
            if t.text in subtype:
                t.click()
                break
        sleep(0.5)

        self.click(CUSTOMER['客户等级'])
        sleep(0.5)
        rank = self.find_elements(CUSTOMER['列表'])
        random.choice(rank).click()

        # 选择配送地址
        self.click(CUSTOMER['省市区'])
        self.switch_to_native()  # 切换到APP视图做swipe操作,滑动选择省市区
        width = self.driver.get_window_size().get('width')  # 获取屏幕宽度
        height = self.driver.get_window_size().get('height')  # 获取屏幕高度
        self.driver.swipe(width * 0.25, height * 0.9, width * 0.25,
                          height * 0.1)
        self.driver.swipe(width * 0.9, height * 0.9, width * 0.9, height * 0.7)
        self.switch_to_webview()  # 切换到H5视图继续后面的操作
        self.click(CUSTOMER['完成'])
        self.clear_and_sendkeys(CUSTOMER['详细地址'], create_gbk(8))

        if flag:
            for _ in range(random.randint(1, 3)):
                self.click(CUSTOMER['添加图片'])
                self.switch_to_native()  # 切换到微信视图控制相机拍照
                self.click(PUBLIC['拍照'])
                self.click(PUBLIC['确认照片'])
                sleep(3)  # 等待图片上传完成
                self.switch_to_webview()  # 切换到H5视图继续操作

        self.click(CUSTOMER['新增'])
        sleep(0.5)
        self.click(CUSTOMER['确定'])
        sleep(1)
Пример #12
0
    def return_home_page(self):
        """返回首页"""
        logging.info(format_str('return_home_page'))

        time.sleep(2)
        if self.is_exists(PUBLIC['底部首页菜单']):
            self.click(PUBLIC['底部首页菜单'])
        elif self.is_exists(PUBLIC['悬浮图标']):
            self.click(PUBLIC['悬浮图标'])
            self.click(PUBLIC['返回首页'])
        else:
            self.click(PUBLIC['底部首页按钮'])
Пример #13
0
 def single_output(self):
     """APP单个出库"""
     logging.info(format_str('single_output'))
     order_list = self.filter_order()
     if order_list:  # 如果存在待出库的订单
         order_list[0].click()  # 点击第一个订单展开详情
         sleep(0.5)
         self.click(OUTPUT['单个出库'])
         sleep(0.5)
         self.click(OUTPUT['确定'])
     else:
         logging.warning('{:*^56}'.format(' 没有待出库的订单 '))
Пример #14
0
    def customer_visit_replenish(self, flag=None):
        """常规拜访-补录"""
        logging.info(format_str('customer_visit_replenish'))

        self.click(CUSTOMER['拜访补录'])
        self.clear_and_sendkeys(CUSTOMER['备注'], create_gbk(30))  # 添加备注信息
        self.upload_photo(flag)  # 添加照片
        self.click(CUSTOMER['提交'])
        sleep(1)
        self.click(CUSTOMER['确定'])
        self.click(CUSTOMER['拜访完成'])
        self.click(CUSTOMER['确定'])
Пример #15
0
    def customer_visit(self, flag=None):
        """常规拜访"""
        logging.info(format_str('customer_visit'))

        self.click(CUSTOMER['常规拜访'])
        self.clear_and_sendkeys(CUSTOMER['备注'], create_gbk(30))
        self.take_photo(flag)
        self.click(CUSTOMER['提交'])
        sleep(1)
        self.click(CUSTOMER['确定'])
        self.click(CUSTOMER['拜访完成'])
        self.click(CUSTOMER['确定'])
Пример #16
0
    def add_gift(self):
        """ 随机将购物车商品设为赠品 """
        logging.info(format_str('add_gift'))
        if self.driver.title == '产品列表':
            self.click(ORDER['购物车'])

            # 获取所有的赠品框,随机勾选
            if self.driver.title == '购物车':
                select_gift = self.find_elements(ORDER['勾选赠品'])
                random.choice(select_gift).click()

                self.click(ORDER['添加商品'])
Пример #17
0
    def open_wechat_ccloud(self):
        """进入微信公众号'武汉珈研'里的订单云平台"""
        logging.info(format_str('open_wechat_ccloud'))

        # self.click(PUBLIC['武汉珈研'])
        m_list = self.find_elements(PUBLIC['消息列表'])
        for m in m_list:
            if m.text == '武汉珈研':
                m.click()
                break
        self.find_elements(PUBLIC['订单云平台'])[0].click()
        time.sleep(2)
        self.switch_to_webview()  # 切换到H5视图
        self.choose_accout()
Пример #18
0
    def empty_cart(self):
        """ 清空购物车 """
        logging.info(format_str('empty_cart'))
        if self.driver.title == '产品列表':
            self.click(ORDER['购物车'])

            # 通过循环删除购物车所有商品
            if self.driver.title == '购物车':
                del_icons = self.find_elements(ORDER['删除商品'])
                for icon in del_icons:
                    icon.click()
                    self.click(ORDER['删除确认'])
                    sleep(0.5)
                self.click(ORDER['添加商品'])
Пример #19
0
 def submit_and_confirm(self):
     """提交活动"""
     logging.info(format_str('submit_and_confirm'))
     if self.is_exists(ACTIVITY['提交']):
         self.click(ACTIVITY['提交'])
         # 如果出现继续上传的提示,点击继续上传
         if self.is_exists(ACTIVITY['继续上传']):
             self.click(ACTIVITY['继续上传'])
             sleep(5)
             self.click(ACTIVITY['提交'])
     else:
         self.click(ACTIVITY['营销提交'])
     self.click(ACTIVITY['确定'])
     sleep(2)
Пример #20
0
 def choose_accout(self, name=None):
     """
     如果出现选账套页面,进入name账套,如果没指定name,默认选第一个
     :param name: 账套名称
     """
     title = self.driver.title  # 获取当前页面title
     if title == '选择用户':  # 如果页面title是选择用户,说明是进入了选择账套页面
         logging.info(format_str('choose_accout'))
         sets = self.find_elements(PUBLIC['账套列表'])
         if name:
             for s in sets:
                 if s.text == name:
                     s.click()
                     return
         sets[0].click()
Пример #21
0
    def groupon_activity(self, flag=None):
        """团购直销活动"""
        # 进入团购直销活动
        self.choose_activity_type(1)
        logging.info(format_str('groupon_activity'))

        self.choose_activity()  # 选择活动
        self.choose_expense()   # 选择费用明细
        self.clear_and_sendkeys(ACTIVITY['单位名称'], create_gbk(5))
        self.clear_and_sendkeys(ACTIVITY['联系人'], create_name())
        self.clear_and_sendkeys(ACTIVITY['电话'], create_phone())
        self.present_num()  # 赠送数量
        self.present_money()    # 赠送金额
        self.take_photo(flag)   # 拍照上传
        self.submit_and_confirm()
Пример #22
0
 def cultivate_activity_supplement(self, flag=None):
     """消费培育活动-补录"""
     # 选择消费培育活动
     self.choose_activity_supplement_type(0)
     logging.info(format_str('cultivate_activity_supplement'))
     self.choose_activity()  # 选择活动
     self.choose_expense()   # 选择费用明细
     self.clear_and_sendkeys(ACTIVITY['联系人'], create_name())
     self.clear_and_sendkeys(ACTIVITY['电话'], create_phone())
     self.clear_and_sendkeys(ACTIVITY['地址'], create_gbk(6))
     self.clear_and_sendkeys(ACTIVITY['人数'], random.randint(1, 3))
     self.present_num()  # 赠送数量
     self.present_money()    # 赠送金额
     self.upload_photo(flag)  # 上传照片
     self.submit_and_confirm()
     sleep(2)
Пример #23
0
    def mashup_order(self, isgift=True):
        """聚合下单"""
        logging.info(format_str('mashup_order'))
        if isgift:
            sleep(0.5)
            self.add_gift()

        self.click(ORDER['下单'])
        sleep(1)
        self.click(ORDER['提交订单'])
        sleep(0.5)
        self.click(ORDER['下单二次确认'])
        sleep(1)
        self.click(ORDER['拜访完成'])
        sleep(0.5)
        self.click(ORDER['拜访完成二次确认'])
Пример #24
0
    def activity_audit(self, flag=None):
        """
        活动审核
        :param flag: True代表审核通过,False代表审核拒绝
        """
        self.click(AUDIT['活动审核'])

        if not self.is_exists(AUDIT['拒绝']):
            logging.warning('{:*^56}'.format(' 活动审核列表为空 '))
            return
        if flag:
            self.audit_pass()
        else:
            logging.info(format_str('audit_refuse'))
            self.click(AUDIT['拒绝'])
            self.clear_and_sendkeys(AUDIT['备注'], create_gbk(10))
            self.click(AUDIT['确认'])
        self.return_index()
Пример #25
0
    def order_audit(self, flag=True):
        """
        订单审核
        :param flag: True代表审核通过,False代表审核拒绝
        """
        self.click(AUDIT['订单审核'])
        if not self.is_exists(AUDIT['拒绝']):
            logging.warning('{:*^56}'.format(' 订单审核列表为空 '))
            return

        if flag:
            self.audit_pass()
        else:
            logging.info(format_str('audit_refuse'))
            self.click(AUDIT['拒绝'])
            reasons = self.find_elements(AUDIT['订单拒绝理由'])
            random.choice(reasons).click()
            self.click(AUDIT['确认'])
        self.return_index()
Пример #26
0
    def present_num(self):
        """赠送数量"""
        logging.info(format_str('present_num'))

        if self.is_exists(ACTIVITY['赠送数量']):  # 非补录时数量输入框的id是apply_num1
            if self.element_is_dispalyed(ACTIVITY['赠送数量']):
                available_num = int(self.get_text(ACTIVITY['可用数量'])[1:-1])  # 可用数量
                if available_num <= 0:
                    self.clear_and_sendkeys(ACTIVITY['赠送数量'], '0')
                else:
                    self.clear_and_sendkeys(ACTIVITY['赠送数量'], random.randint(1, 5))

        if self.is_exists(ACTIVITY['补录赠送数量']):  # 非补录时数量输入框的id是apply_num1
            if self.element_is_dispalyed(ACTIVITY['补录赠送数量']):
                available_num = int(self.get_text(ACTIVITY['可用数量'])[1:-1])  # 可用数量
                if available_num <= 0:
                    self.clear_and_sendkeys(ACTIVITY['补录赠送数量'], '0')
                else:
                    self.clear_and_sendkeys(ACTIVITY['补录赠送数量'], random.randint(1, 5))
Пример #27
0
    def take_photo(self, flag=None):
        """
        拍照上传
        :param flag: 用来标识是否是企业微信,默认微信
        """
        logging.info(format_str('take_photo'))

        for i in range(random.randint(1, 5)):
            self.click(PUBLIC['新增照片'])
            time.sleep(1)

            self.switch_to_native()  # 切换到NATIVE视图控制相机拍照
            self.click(PUBLIC['拍照'])
            time.sleep(1)
            self.click(PUBLIC['确认照片'])
            if flag:
                self.click(PUBLIC['企业微信二次确认'])
            time.sleep(3)  # 等待图片上传完成
            self.switch_to_webview()  # 切换到H5视图继续操作
Пример #28
0
    def visit_audit(self, flag=True):
        """
        客户拜访审核
        :param flag: True代表审核通过,False代表审核拒绝
        """
        self.click(AUDIT['拜访审核'])

        if not self.is_exists(AUDIT['拒绝']):
            logging.warning('{:*^56}'.format(' 拜访审核列表为空 '))
            return
        if flag:
            self.audit_pass()
        else:
            logging.info(format_str('audit_refuse'))
            self.click(AUDIT['拒绝'])
            sel = self.find_element(AUDIT['拜访拒绝理由'])
            Select(sel).select_by_value(str(random.randint(1, 3)))
            self.clear_and_sendkeys(AUDIT['备注'], create_gbk(10))
            self.click(AUDIT['确认'])
        self.return_index()
Пример #29
0
    def order_refund(self):
        """订单退货"""
        logging.info(format_str('order_refund'))

        if not self.is_exists(REFUND['退货按钮']):
            for i in range(4):
                self.click(REFUND['日期筛选'])
                sleep(0.5)
                conditions = self.find_elements(PUBLIC['列表'])
                conditions[i].click()
                if self.is_exists(REFUND['退货按钮']):
                    break
            if not self.is_exists(REFUND['退货按钮']):
                logging.warning('{:*^56}'.format(' 没有可退货的订单 '))
                return
        self.click(REFUND['退货按钮'])
        self.click(REFUND['提交订单'])
        # sleep(0.5)
        self.click(REFUND['确定'])
        self.click(REFUND['否'])
Пример #30
0
    def add_product(self, kinds):
        """
        添加商品到购物车
        :param kinds: 商品种类,默认为1
        """
        logging.info(format_str('add_product'))

        big = self.find_elements(ORDER['大单位输入框'])  # 获取所有大单位输入框
        small = self.find_elements(ORDER['小单位输入框'])  # 获取所有大单位输入框
        for k in range(kinds):
            sleep(1)
            _i = random.randint(1, len(big) - 1)
            big[_i].click()
            self.clear_and_sendkeys(ORDER['输入商品数量'], random.randint(0, 3))
            self.click(ORDER['确认输入'])

            sleep(0.5)
            small[_i].click()
            self.clear_and_sendkeys(ORDER['输入商品数量'], random.randint(1, 3))
            self.click(ORDER['确认输入'])
        sleep(1)