def put(header, address, request_parameter_type, data=None, timeout=8, files=None): """ put 请求 :param header: 请求头 :param address: host地址 :param request_parameter_type: 接口请求参数格式 (form-data, raw, Restful) :param data: 请求参数 :param timeout: 超时时间 :param files: 文件路径 :return: """ if request_parameter_type == 'raw': data = json.dumps(data) response = requests.put(url=address, data=data, headers=header, timeout=timeout, files=files) try: return response.status_code, response.json() except json.decoder.JSONDecodeError: return response.status_code, '' except simplejson.errors.JSONDecodeError: return response.status_code, '' except Exception as e: logging.exception('ERROR') logging.error(e) raise
def save_cookie(header, address, timeout=8, data=None, files=None): """ 保存cookie信息 :param header: 请求头 :param address: 请求地址 :param timeout: 超时时间 :param data: 请求参数 :param files: 文件路径 :return: """ cookie_path = setupMain.PATH + '/aff/data/cookie.txt' response = requests.post(url=address, data=data, headers=header, timeout=timeout, files=files) try: cookie = response.cookies.get_dict() for i in cookie: values = cookie[i] with open(cookie_path, 'w+', encoding='utf-8')as f: f.write(i+"="+values) logging.debug("cookies已保存,结果为:%s" % (i+"="+values)) except json.decoder.JSONDecodeError: return response.status_code, '' except simplejson.errors.JSONDecodeError: return response.status_code, '' except Exception as e: logging.exception('ERROR') logging.error(e) raise
def get(header, address, data, timeout=8): """ get 请求 :param header: 请求头 :param address: host地址 :param data: 请求参数 :param timeout: 超时时间 :return: """ response = requests.get(url=address, params=data, headers=header, timeout=timeout) if response.status_code == 301: response = requests.get(url=response.headers["location"]) try: return response.status_code, response.json() except json.decoder.JSONDecodeError: return response.status_code, '' except simplejson.errors.JSONDecodeError: return response.status_code, '' except Exception as e: logging.exception('ERROR') logging.error(e) raise
def get_element_text(self, locator): element = self.wait_element_visibility(locator) try: MyLog.info("获取:{}元素文本:{}".format(locator, element.text)) return element.text except Exception as e: MyLog.error("获取元素文本:{}失败".format(element.text)) self.save_image() raise e
def input_text(self, locator, value): element = self.wait_element_visibility(locator) try: MyLog.info("点击:{},输入:{}".format(locator, value)) element.send_keys(value) except Exception as e: MyLog.error("输入数据:{}失败".format(value)) self.save_image() raise e
def click_element(self, locator): element = self.wait_element_visibility(locator) try: MyLog.info("点击元素:{}".format(locator)) element.click() except Exception as e: MyLog.error("点击元素:{}失败".format(locator)) self.save_image() raise e
def wait_element_visibility(self, locator) -> WebElement: MyLog.info("等待元素:{}".format(locator)) try: element = WebDriverWait(self.driver, 20).until( expected_conditions.presence_of_element_located(locator)) return element except Exception as e: MyLog.error("等待元素:{}超时".format(locator)) self.save_image() raise e
def long_click(self, locator): action = TouchAction(self.driver) element = self.wait_element_visibility(locator) try: MyLog.info("长按:{}元素".format(locator)) action.long_press(element).wait(10000).perform() except Exception as e: MyLog.error("长按元素:{}失败".format(locator)) self.save_image() raise e
def get_toast_msg(self, locator): #return (By.XPATH, "//*[@class='android.widget.Toast']") #return (By.XPATH, "//*[@text='审核成功']") toast_msg = self.wait_element_visibility(locator) try: MyLog.info("获取toast元素:{},文本:{}".format(locator, toast_msg.text)) return toast_msg.text except Exception as e: MyLog.error("获取toast元素文本:{}失败".format(toast_msg.text)) self.save_image() raise e
def post(header, address, request_parameter_type, timeout=8, data=None, files=None): """ post请求 :param header: 请求头 :param address: 请求地址 :param request_parameter_type: 请求参数格式(form_data,raw) :param timeout: 超时时间 :param data: 请求参数 :param files: 文件路径 :return: """ if 'form_data' in request_parameter_type: for i in files: value = files[i] if '/' in value: file_parm = i files[file_parm] = (os.path.basename(value), open(value, 'rb')) enc = MultipartEncoder( fields=files, boundary='--------------' + str(random.randint(1e28, 1e29 - 1)) ) header['Content-Type'] = enc.content_type response = requests.post(url=address, data=enc, headers=header, timeout=timeout) else: response = requests.post(url=address, data=data, headers=header, timeout=timeout, files=files) try: if response.status_code != 200: return response.status_code, response.text else: return response.status_code, response.json() except json.decoder.JSONDecodeError: return response.status_code, '' except simplejson.errors.JSONDecodeError: return response.status_code, '' except Exception as e: logging.exception('ERROR') logging.error(e) raise