Exemple #1
0
 def send_phone_number(self, number, text=""):
     doc = text + "输入手机号-"
     try:
         list = []
         for i in number:
             if i == "1":
                 self.driver.keyevent(8)
             elif i == "2":
                 self.driver.keyevent(9)
             elif i == "3":
                 self.driver.keyevent(10)
             elif i == "4":
                 self.driver.keyevent(11)
             elif i == "5":
                 self.driver.keyevent(12)
             elif i == "6":
                 self.driver.keyevent(13)
             elif i == "7":
                 self.driver.keyevent(14)
             elif i == "8":
                 self.driver.keyevent(15)
             elif i == "9":
                 self.driver.keyevent(16)
             elif i == "0":
                 self.driver.keyevent(7)
             list.append(str(i))
         num = "".join(list)
         UserLog().info(f"输入数字是{num}")
     except:
         UserLog().info("输入数字失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #2
0
 def ele_if_exist(self, locator):
     try:
         self.driver.find_element(*locator)
         UserLog().info(f"元素{locator}存在")
         return True
     except:
         UserLog().info(f"元素{locator}不存在")
         return False
Exemple #3
0
 def touch(self, x, y, doc=""):
     try:
         UserLog().info(f"点击坐标{(x, y)}")
         TouchAction(self.driver).tap(x=x, y=y).perform()
     except:
         UserLog().info("点击坐标失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #4
0
 def get_size(self, doc=""):
     try:
         size = self.driver.get_window_size()
         UserLog().info(f"当前手机屏幕尺寸是:{size}")
         return size
     except:
         UserLog().info("获取屏幕大小失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #5
0
 def get_elements(self, locator, doc=""):
     try:
         by = locator[0]
         value = locator[1]
         UserLog().info("定位方式:by." + by + "--->定位值:" + value)
         return self.driver.find_elements(*locator)
     except:
         UserLog().info("没有找到这些元素")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #6
0
 def get_text(self, locator, doc=""):
     self.wait_eleVisible(locator, doc=doc)
     ele = self.get_element(locator, doc)
     UserLog().info(f"获取到的文本内容是:{ele.text}")
     # 输入操作
     try:
         return ele.text
     except:
         UserLog().info("获取元素文本内容失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #7
0
 def click_elements(self, locator, index, doc=""):
     self.wait_eleVisible(locator, doc=doc)
     # 找元素
     ele = self.get_elements(locator, doc)[index]
     UserLog().info(f"{doc}点击元素{locator}")
     try:
         # 元素操作
         ele.click()
     except:
         UserLog().info("元素点击操作失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #8
0
 def swipe_down(self, size, doc=""):
     try:
         start_x = size["width"] * 0.5
         start_y = size["height"] * 0.1
         end_x = size["width"] * 0.5
         end_y = size["height"] * 0.9
         UserLog().info(f"上滑:从({start_x, start_y})--->({end_x, end_y})")
         # 向下滑动:X轴不变,Y轴从小到大。
         self.driver.swipe(start_x, start_y, end_x, end_y, 200)
     except:
         UserLog().info("下滑失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #9
0
class FindElement(object):

    def __init__(self, driver):
        self.driver = driver
        self.logger = UserLog()

    def find_element(self, key, index=None):
        by = key[0]
        value = key[1]
        self.logger.info("定位方式:" + by + "--->定位值:" + value)
        try:
            if by == "id":
                if index == None:
                    return self.driver.find_element_by_id(value)
                else:
                    return self.driver.find_elements_by_id(value)[index]
            elif by == "class_name":
                if index == None:
                    return self.driver.find_element_by_class_name(value)
                else:
                    return self.driver.find_elements_by_class_name(value)[index]
            elif by == "accessibility_id":
                if index == None:
                    return self.driver.find_element_by_accessibility_id(value)
                else:
                    return self.driver.find_elements_by_accessibility_id(value)[index]
            elif by == "android_uiautomator":
                if index == None:
                    return self.driver.find_element_by_android_uiautomator(value)
                else:
                    return self.driver.find_elements_by_android_uiautomator(value)[index]
            elif by == "xpath":
                if index == None:
                    return self.driver.find_element_by_xpath(value)
                else:
                    return self.driver.find_elements_by_xpath(value)[index]
        except Exception as e:
            print("没有找到这个元素")
            # 截图路保存径,绝对路径,也可以用相对路径
            SCREENSHOTURL = error_image
            # 时间样式
            ISOTIMEFORMAT = '%Y%m%d%H%M%S'
            # 寻找失败时自动截图至指定目录sreenshot,截图名称为调用方法名(测试用例名)+ 时间戳 + png后缀
            self.driver.get_screenshot_as_file(
                SCREENSHOTURL + sys._getframe(1).f_code.co_name + '_' + time.strftime(ISOTIMEFORMAT, time.localtime(
                    time.time())) + ".png")
            raise e
Exemple #10
0
 def get_elment_attribute(self, locator, attr, doc=""):
     ele = self.get_element(locator, doc)
     # 输入操作
     try:
         return ele.get_attribute(attr)
     except:
         UserLog().info("获取元素的属性失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #11
0
 def wait_eleclickable(self, locator, times=30, poll_frequency=0.5, doc=""):
     try:
         UserLog().info(f"等待元素{locator}可点击")
         # 开始等待的时间
         start_time = time.time()
         WebDriverWait(self.driver, times, poll_frequency).until(
             EC.element_to_be_clickable(locator))
         # 结束等待的时间点
         end_time = time.time()
         # 求一个差值,写在日志里
         time_interval = (
             datetime.datetime.fromtimestamp(end_time) -
             datetime.datetime.fromtimestamp(start_time)).seconds
         UserLog().info(f"等待时长为:{time_interval}")
     except:
         UserLog().info("等待元素可点击失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #12
0
 def save_screenshot(self, name):
     time1 = datetime.datetime.now().strftime('%Y-%m-%d')
     time2 = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
     # 图片名称+模块名+页面名称+操作名称+时间.png
     file_Path = error_image + f"\\{time1}"
     if not os.path.exists(file_Path):
         os.makedirs(file_Path)
     file_name = file_Path + f"\\{time2}-{name}.png"
     self.driver.save_screenshot(file_name)
     UserLog().info(f"截取网页成功,文件路径为为:{file_name}")
Exemple #13
0
 def input_text(self, locator, text, doc=""):
     self.wait_eleVisible(locator, doc=doc)
     ele = self.get_element(locator, doc)
     try:
         # 输入操作
         ele.send_keys(text)
     except:
         UserLog().info("元素输入操作失败!")
         # 截图
         self.save_screenshot(doc)
         raise
 def Purchase_limit_button(self, button, text=""):
     doc = text + f"点击【{button}】选项-"
     UserLog().info(f"点击【{button}】选项")
     if button == "不限购":
         self.click_element(PGCommon.Purchase_limit_no, doc=doc)
     elif button == "设置限购":
         self.click_element(PGCommon.Purchase_limit_yes, doc=doc)
     elif button == "无限期":
         self.click_element(PGCommon.Purchase_limit_no_day, doc=doc)
     else:
         self.click_element(PGCommon.Purchase_limit_yes_day, doc=doc)
Exemple #15
0
 def get_toastMsg(self, text, doc=""):
     # 1、xpath表达式 文本匹配
     locator = '//*[contains(@text,"{}")]'.format(text)
     # 等待的时候,要用元素存在的条件。不能用元素可见的条件
     try:
         self.wait_elePresence(locator)
         return self.get_element(locator).text
     except:
         UserLog().info("没有找到匹配的toast!!!!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #16
0
 def swipe_left(self, size, doc=""):
     try:
         start_x = size["width"] * 0.9
         start_y = size["height"] * 0.5
         end_x = size["width"] * 0.1
         end_y = size["height"] * 0.5
         # 左滑:Y轴不变,X轴从大到小。
         self.driver.swipe(start_x, start_y, end_x, end_y, 200)
     except:
         UserLog().info("左滑失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #17
0
 def swipe_right(self, size, doc=""):
     try:
         start_x = size["width"] * 0.1
         start_y = size["height"] * 0.5
         end_x = size["width"] * 0.9
         end_y = size["height"] * 0.5
         # 右滑:Y轴不变,X轴从小到大。
         self.driver.swipe(end_x, end_y, start_x, start_y, 200)
     except:
         UserLog().info("右滑失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #18
0
 def pay_password(self, text=""):
     doc = text + "输入支付密码-"
     try:
         self.driver.keyevent(8)
         self.driver.keyevent(9)
         self.driver.keyevent(10)
         self.driver.keyevent(11)
         self.driver.keyevent(12)
         self.driver.keyevent(13)
     except:
         UserLog().info("输入支付密码失败!")
         # 截图
         self.save_screenshot(doc)
         raise
 def Purchase_limit_button(self, button, text=""):
     if button == "不限购":
         number = 1
     elif button == "设置限购":
         number = 2
     elif button == "无限期":
         number = 3
     else:
         number = 4
     doc = text + f"点击【{button}】选项-"
     UserLog().info(f"点击【{button}】选项")
     new_locator = self.locator_by_text(PGCommon.Purchase_limit_button,
                                        number)
     self.click_element(new_locator, doc=doc)
Exemple #20
0
 def app_upload_image(self, choose_locator, ok_locator, doc=""):
     try:
         # 权限-始终允许
         time.sleep(1)
         if self.ele_if_exist(Common.always_allowed):
             self.click_element(Common.always_allowed, doc=doc)
         # 选择图片
         self.click_element(choose_locator)
         # 点击确定
         self.click_element(ok_locator)
     except:
         UserLog().info("上传图片失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #21
0
 def send_pwd(self, text=""):
     doc = text + "输入密码-"
     try:
         # 输入密码 默认qaz123
         self.driver.keyevent(45)
         self.driver.keyevent(29)
         self.driver.keyevent(54)
         self.driver.keyevent(8)
         self.driver.keyevent(9)
         self.driver.keyevent(10)
     except:
         UserLog().info("输入密码失败!")
         # 截图
         self.save_screenshot(doc)
         raise
Exemple #22
0
 def web_upload_image(self, filepath, doc=""):
     try:
         # 一级窗口
         dialog = win32gui.FindWindow("#32770", "打开")
         # 二级窗口
         comboxex32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None)
         # 三级窗口
         combox = win32gui.FindWindowEx(comboxex32, 0, "ComboBox", None)
         # 四级窗口 文本输入框
         edit = win32gui.FindWindowEx(combox, 0, "Edit", None)
         # 打开按钮 二级窗口
         button = win32gui.FindWindowEx(dialog, 0, "Button", "打开")
         # 输入文件路径
         win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath)
         # 点击打开按钮 上传文件
         win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button)
     except:
         UserLog().info("Web上传图片失败!")
         # 截图
         self.save_screenshot(doc)
         raise
 def limit_time(self, limit_time, text=""):
     doc = text + f"输入限购周期【{limit_time}】-"
     self.wait_eleVisible(PGCommon.limit_time, doc=doc)
     UserLog().info("输入的限购周期是:" + limit_time)
     self.input_text(PGCommon.limit_time, limit_time, doc=doc)
 def limit_quantity(self, limit_quantity, text=""):
     doc = text + f"输入限购数量-"
     self.wait_eleVisible(PGCommon.limit_quantity, doc=doc)
     UserLog().info("输入的限购数量是:" + limit_quantity)
     self.input_text(PGCommon.limit_quantity, limit_quantity, doc=doc)
Exemple #25
0
 def subsist(self, subsist, text=""):
     doc = text + "预付款-"
     UserLog().info("输入预付款是:" + subsist)
     self.input_text(SG.subsist, subsist, doc=doc)
Exemple #26
0
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time :2020/4/23 10:11
# @Author :春衫
# @File :calculation.py

from Web.Common import Dividend
from Web.Common.fengyong.Calculation.payment_method import PaymentMethod
from Web.Common.fengyong.sql.wallet_detail import wallet_detail
from Web.Common import DoExcel
from Web.Common import test_data_path
from Web.Common import UserLog

my_logger = UserLog()
test_data = DoExcel.get_data(test_data_path)


class Calculation:
    def __init__(self,
                 buyer_identity,
                 seller_identity,
                 buyer_province_proportion,
                 buyer_city_proportion,
                 buyer_area_proportion,
                 buyer_personal_proportion,
                 disanfang_province_proportion=None,
                 disanfang_city_proportion=None,
                 disanfang_area_proportion=None,
                 disanfang_personal_proportion=None):
        '''
Exemple #27
0
 def send_search(self, good_name, text=""):
     doc = text + "搜索框-输入-"
     UserLog().info("搜索框-输入文字是:" + good_name)
     self.input_text(SearchGood.send_search, good_name, doc=doc)
     self.driver.keyevent(66)
     self.choose_first_good(good_name, text=doc)
Exemple #28
0
 def add_munber(self, munber, text=""):
     doc = text + "点击【购买数量】输入框-"
     time.sleep(0.5)
     UserLog().info("输入的商品数量是:" + munber)
     self.input_text(GD.add_amount, munber, doc=doc)
Exemple #29
0
 def limit_quantity(self, limit_quantity, text=""):
     doc = text + "限购数量-"
     UserLog().info("输入限购数量是:" + limit_quantity)
     self.input_text(SG.limit_quantity, limit_quantity, doc=doc)
Exemple #30
0
 def stock(self, stock, text=""):
     doc = text + "商品库存-"
     UserLog().info("输入商品库存是:" + stock)
     self.input_text(SG.stock, stock, doc=doc)