本文主要记录在录制过程中,遇到一些需要特殊处理的脚本。如果有总结不好的地方,希望多多指点。

一、输入框listview选择:

  如图:

   

  类似这种情况,选择其中一项的脚本如下:

m = driver.find_element_by_id("id/llBtns")
m.find_element_by_name(u'仓管').click()

  

二、输入框需要输入中文时:

  1、在setUp方法中配置:

    def setUp(self):
      desired_caps['unicodeKeyboard']=True

      desired_caps['resetKeyboard']=True

  2、在输入框输入代码中,记得在要输入中文的前面加“u”;例如 driver.find_element_by_id("name").send_keys(u'中文输入')

三、引用excel表格

  1、需要下载xlrd;

  2、引用xlrd库:import xlrd

  3、获取excel表值:

bk = xlrd.open_workbook('D:\\del_tools\\python\\setup\\test\\data.xls')  #打开excel表
sh = bk.sheet_by_name('Sheet1')  #打开表格的工作表
usermobile = sh.cell_value(1,0)  #获取工作表中对应表格的值

#注意:uesermobile的类型是float,如果是手机号的话,这个值会显示为13800138000.0;

#send_keys()方法中,参数要求是string 类型的,所以这里要将float类型转换为string类型:str(int(float x ));

四、处理首页弹窗

  思路:查看首页是否存在没弹窗时的元素,存在则表示没有弹窗,不存在则表示存在弹窗。

  实例:

#处理开屏广告
def init_case(self):
    print(u'处理开屏广告')
    try:
        sleep(3)
        #查看弹窗是否存在
        el = self.driver.find_element_by_id("id/llStorage")
        print "not exict"
        pass

    except Exception,ex:
        sleep(3)
        os.system("adb shell input tap"+" "+str(629)+" "+str(290))
        print 'exict'
        sleep(2)

这里用了异常处理机制,当不存在弹窗时,执行pass语句;存在弹窗时,点击关闭按钮关闭弹窗。另外,由于无法识别弹窗元素,所以这里用到了点击屏幕某一点的操作:adb shell input tap x y ;

五、滑动屏幕

  实例:

#滑动屏幕
#获取手机屏幕大小
def getSize(self):
    x = self.driver.get_window_size()['width']
    y = self.driver.get_window_size()['height']
    return(x,y)

#屏幕向左滑动
def swipeLeft(self,t):
    l = getSize(self)
    x1 = int(l[0]*0.75)
    y1 = int(l[1]*0.5)
    x2 = int(l[0]*0.05)
    self.driver.swipe(x1,y1,x2,y1,t)

这里的滑动功能主要是参考博文(http://www.cnblogs.com/testhub/p/5949668.html),这里介绍得很好。

六、长按某一点

引用TouchAction
from appium.webdriver.common.touch_action import TouchAction
执行长按动作:
        action1 = TouchAction(self.driver)
        action1.long_press(a).wait(10000).perform()    

 

python脚本难点的更多相关文章

  1. freeswitch嵌入python脚本

    操作系统:debian8.5_x64 freeswitch 版本 : 1.6.8 python版本:2.7.9 开启python模块 安装python lib库 apt-get install pyt ...

  2. python脚本后台运行

    问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python t ...

  3. 某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

    某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...

  4. 动态执行python脚本

    前言 存在许多独立的python脚本,这些脚本可能会增加,也可能会减少,现在需要按照某种顺序调度这些程序.在python的standard library中,有一个模块imp可以实现动态的调用ptho ...

  5. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  6. SecureCRT中python脚本编写

    SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是Secu ...

  7. Python脚本配合Linux计划任务工作

    经常遇到直接运行Python脚本没有问题,但是一放入/etc/crontab之后就歇菜的情况,总结了一下,大致需要注意以下几点: 1. 脚本首行加入#!/usr/bin/env python 2. 脚 ...

  8. Labview调用Python脚本

    Labview程序框图如下: Python脚本如下: #!/usr/bin/env pythonimport sys #Command Line Arguements are stored in li ...

  9. 使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

随机推荐

  1. 第五十五天 css基础入门

    一.引入css的三种方式 1.行间式 <div style="width: 100px; height: 100px; background-color: red">& ...

  2. BZOJ3277 串 【后缀数组】【二分答案】【主席树】

    题目分析: 用"$"连接后缀数组,然后做一个主席树求区间内不同的数的个数.二分一个前缀长度再在主席树上求不同的数的个数. 代码: #include<bits/stdc++.h ...

  3. CH0802 占卜DIY

    模拟 没怎么看题..直接deque模拟水过了.. 但是后来回过头看了下题意..如果再次拿到正面朝上的牌,应该是废操作..可能是数据太水了... #include <bits/stdc++.h&g ...

  4. CODEFORCES掉RATING记 #3

    比赛:Codeforces Round #426 (Div. 2) 时间:2017.7.30晚 开场先看AB A:给你两个方向,和旋转次数(每次旋转90度),问你旋转方向是什么 B:给你一个字符串,问 ...

  5. 加载样式TTFB waiting时间长

    1.谷歌浏览器64位 2.在调试网页的时候,每回修改一个,刷新时,速度很慢 3.结果很恼火.每调试一回等半天.效率低下.... 解决办法是: "在每个CSS规则的后面加一个空行". ...

  6. Apache虚拟主机+AD压力测试

    <Directory "/usr/local/awstats/wwwroot"> Options NoneAllowOverride None Order allow, ...

  7. luogu5012 水の数列 (并查集+线段树)

    如果我们能求出来每个区间个数的最大分值,那就可以用线段树维护这个东西 然后出答案了 然后这个的求法和(luogu4269)Snow Boots G非常类似,就是我们把数大小排个序,每次都拿<=x ...

  8. 【mysql】数据库中的DML DDL DCL TCL 及 Online DDL

    DDL(data definition language) : 数据库定义语言 用来定义创建操作表的时候用到的一些sql命令,比如CREATE.ALTER.DROP等等. DML(data manip ...

  9. PWM实现ADC和DAC

    一.PWM实现AD 利用普通单片机的2个IO及一个运算放大器即可实现AD转换电路,而且很容易扩展成多通道.其占用资源少,成本低,AD 转换精度可以达到8位甚至更高,因此具有一定的实用价值. 1.1 硬 ...

  10. Arch Linux中安装Anaconda

    安装步骤 通过AUR安装yaourt -S anaconda 激活Anaconda环境source /opt/anaconda/bin/activate root 关闭Anaconda环境source ...