封装python+appium 的baseview模块

from selenium.webdriver.support.ui import WebDriverWait
from time import sleep
import os
import time class BaseView(object):
def __init__(self, driver):
self.driver = driver def find_element(self, *loc): # 查找单个元素
try:
WebDriverWait(self.driver, 5).until(lambda driver: driver.find_element(*loc).is_displayed())
return self.driver.find_element(*loc)
except:
print("%s 页面中未找到%s 元素" % (self, loc)) def find_elements(self, *loc): # 查找元素组
return self.driver.find_elements(*loc) def clear_keys(self, loc): # 清空输入框
self.find_element(*loc).clear() def send_keys(self, loc, value): # 清空输入框,查找元素,输入值
self.clear_keys(loc)
self.find_element(*loc).send_keys(value) def click_button(self, loc): # 查找元素,点击
self.find_element(*loc).click() def click_buttons(self, loc, n): # 点击元素组中的一个
self.find_elements(*loc)[n].click() def get_window_size(self): # 获取屏幕尺寸
return self.driver.get_window_size() def swipe(self, start_x, start_y, end_x, end_y, duration): # 屏幕滑动
return self.driver.swipe(start_x, start_y, end_x, end_y, duration) def alert_accept(self): # 接受弹窗
sleep(2)
return self.driver.switch_to_alert().accept() def alert_text(self): # 获取弹窗文本
sleep(2)
return self.driver.switch_to_alert().text # 获取屏幕的宽高
def get_size(self):
size = self.get_window_size()
width = size['width']
height = size['height']
return width, height # 向左边滑动
def swipe_left(self):
# [100,200]
x1 = self.get_size()[0] / 10 * 9
y1 = self.get_size()[1] / 2
x = self.get_size()[0] / 10
self.swipe(x1, y1, x, y1, 2000) # 向右边滑动
def swipe_right(self):
# [100,200]
x1 = self.get_size()[0] / 10
y1 = self.get_size()[1] / 2
x = self.get_size()[0] / 10 * 9
self.swipe(x1, y1, x, y1, 2000) # 向上滑动
def swipe_up(self):
# [100,200]direction
x1 = self.get_size()[0] / 2
y1 = self.get_size()[1] / 10 * 9
y = self.get_size()[1] / 10
self.swipe(x1, y1, x1, y, 2000) # 向下滑动
def swipe_down(self):
# [100,200]
x1 = self.get_size()[0] / 2
y1 = self.get_size()[1] / 10
y = self.get_size()[1] / 10 * 9
self.swipe(x1, y1, x1, y, 2000) def get_screenshot(self, screenshot_name):
now = time.strftime("%Y-%m-%d %H-%M-%S ")
base_path = os.path.dirname(os.path.dirname(__file__))
file_path = base_path + "/report/screenshots/" + now + screenshot_name + ".png"
return self.driver.get_screenshot_as_file(file_path)

Python +appium baseview的更多相关文章

  1. Python + Appium 环境搭建

    ---恢复内容开始--- Appium自动化公司内部测试培训1-环境搭建 课程目的 一.Python + Appium 环境搭建 课程内容 1    安装前准备工作 搭建环境所需要的安装文件已经下载好 ...

  2. Python appium搭建app自动化测试环境

    appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...

  3. python appium笔记(二):元素定位

    #这里的示例是用android来说明的,xpath应该是通用的,resource-id不太清楚,没配过IOS的环境 #环境配置和一些参数的意思不清楚可以看我上一篇python appium笔记(一) ...

  4. 初次尝试使用jenkins+python+appium构建自动化测试

    初次尝试使用jenkins+python+appium构建自动化测试 因为刚刚尝试使用jenkins+python+appium尝试,只是一个Demo需要很多完善,先记录一下今天的成果,再接再厉 第一 ...

  5. Python Appium 滑动、点击等操作

    Python Appium 滑动.点击等操作 1.手机滑动-swipe # FileName : Tmall_App.py # Author : Adil # DateTime : 2018/3/25 ...

  6. Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...

  7. Python+Appium环境搭建

    1.python环境搭建,这里就不做过多介绍 2.安装 node.js 2.1.官网下载node.js:https://nodejs.org/en/download/ 2.2.获取到安装文件后,直接双 ...

  8. (干货分享)mac python+appium环境搭建

    因为mac本自带python2.x(不建议卸载,因为本本本身有很多依赖与此),所以装python3的过程极其坎坷,勉强装好后也总是各种报错.这次装appium环境,直接把原来的python3卸了,用h ...

  9. Python +appium 封装desired_caps模块

    使用python+appium做android的自动化测试时,首先需要启动appium服务,然后连接上手机,配置如下: desired_caps = {"platformName" ...

随机推荐

  1. WEBSHELL-恶意代码检测

    静态查杀 提取特征写成规则库,调用规则库查杀.基于规则,会比较快,但漏报.误报会比较明显,一般的Webshell一句话木马变形混淆会比较多. yara规则 $eval = /(<\?php|[; ...

  2. k8s-job使用

    一.job特性 运行完成后退出,但是不会被删除,便于用户查看日志信息,了解任务完成的情况 删除job时产生的pod也会被一起删除 job中可以运行多个pod(任务执行多次),且可以并行运行缩短任务完成 ...

  3. redis相关文章

    redis主从复制相关文章    <redis如何实现主从数据的同步>      <一篇文章让你明白Redis主从同步>      <redis-sentinel的理解实 ...

  4. 搭建kafaka集群

    服务器环境准备 使用vm虚拟三个linux主机 192.168.212.174 192.168.212.175 192.168.212.176 Zookeeper集群环境搭建 1.每台服务器节点上安装 ...

  5. Kubernetes exec API串接分析

    本篇将说明Kubernetes exec API的运作方式,并以简单范例进行开发在前后端上.虽然Kubernetes提供了不同资源的RESTful API来进行CRUD操作,但是部分API并非单纯的回 ...

  6. 51book机票接口对接,吐血整理(含PHP封装代码)

    前言 最近在对接51book的机票接口,遇到了挺多坑,所以整理一份作为记录 机票有两个不同的接口,一个是机票,另一个是保险 一.申请 要接51book的机票,首先是要申请账号,这时候应该是有客户经理跟 ...

  7. Python解析 算数表达式求值 栈的使用

    使用Python实现一种算数表达式求值的算法,模拟这种使用栈的方式,这是由E.W.Dijkstra在20世纪60年代发明的一种非常简单的算法.代码模拟仅仅表现一种编程思想,代码的逻辑并不完全: if ...

  8. vue 路由跳转带参 方式query ,params

    a.vue向b.vue传值 a.vue this.$router.push({ path: '/payType', query: { putUpList: this.putUpList, name:' ...

  9. UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-22: ordinal not in range(128)

    文件,放在site-package \Python27\Lib\site-packages     sitecustomize.py # -*- coding: utf-8 -*- import sy ...

  10. DbParameter关于Like查询的传参数无效问题

    用传参方式模糊查询searchName 按常规的思路,我们会这样写 ,代码如下: String searchName ="Sam"; String strSql = "s ...