1、切换为横屏
#切换横屏
def switch_landscape(self):
self.driver.orientation = 'LANDSCAPE'
2、切换为竖屏
#切换横屏
def switch_portrait(self):
self.driver.orientation = 'PORTRAIT'
3、获取设备横竖屏状态
orientation = self.driver.orientation
切换横竖屏需注意,切换后系统的“自动锁定”会被选中。
截图:
def screenshot_to_landscape(self,picture_name):
self.driver.save_screenshot('../../images/landscape/'+picture_name+'.png')
Log.log().debug('截图成功')
在代码中我选择将上面部分置为BasePage里,上层代码直接调用即可,调用时传入图片名,避免后续图片存储路径改变时改动地方过多。appium截图是有四个方法,如下:
save_screenshot() 该方法直接保存当前屏幕截图到当前脚本所在文件位置。若指定具体路径的话同样也可以保存在指定文件夹里,看源码就能知道最后返回的也是调用asfile方法的。(文件夹必须存在,否则保存失败)。
get_screenshot_as_file(self, filename):将截图保存到指定的文件夹路径(同样文件夹必须存在,否则失败)。
另外两个截图方法保存的是二进制数据,很少用到。截图可以用在发生异常后截图。
4、判断元素是否存在
如果要判断某个元素是否展示,可以通过self.driver.page_source获取当前页面的全部元素,再判断是否存在某个。这样就能实现一些特定的点击操作。比如,一个面板,未显示时点击按钮后弹出显示,若已显示点击按钮后面板消失。我们若要想要获取面板上的元素则必须保持面板展示,但面板的展示和收起都是点击同一个button,因此,在点击操作前,先获取面板是否已展示,若展示则不进行点击,若未展示则点击按钮调起面板,再进行后续的操作。
def choose_format(self,num):
element = self.driver.page_source
if 'android.widget.GridView' in element:
el = self.driver.find_elements_by_xpath('//android.widget.GridView//android.widget.FrameLayout')
el[num].click()
else:
self.by_xpath('//*[@text="版式"]').click()
el = self.driver.find_elements_by_xpath('//android.widget.GridView//android.widget.FrameLayout')
el[num].click()
5、拖动进度条
def set_process(self,num):
elemment = self.by_id("cn.wps.moffice_eng:id/watermark_textsize_progress")
# 获取拖动条的宽
width = elemment.size.get('width')
#获取进度条坐标
x = elemment.location.get('x')
y = elemment.location.get('y')
#精度需要自己调
process = self.driver.swipe(x, y, int(width * num), y, 1000)
利用左右滑动来实现拖动进度条。
6、长按元素
action = TouchAction(self.driver)
action.long_press(element,duration=5).perform()
7、获取屏幕宽度或高度
device_width = driver.get_window_size()['width']
device_height = driver.get_window_size()['height']
8、获取屏幕坐标
driver.get_window_position()['x']
driver.get_window_position()['y']
9、获取元素的宽高
self.driver.find_element_by_class_name(class_name).size
#源码中size的形式为:
new_size = {"height": size["height"],
"width": size["width"]}