python appium 可能需要用到的 代码片段

2.日志法
a、启动待测apk
b、开启日志输出:adb logcat>D:/log.txt
c、关闭日志输出:ctrl+c
d、查看日志
直接搜索 :Displayed
找寻:Displayed com.mm.android.hsy/.ui.LoginActivity: +3s859ms
appPackage = com.mm.android.hsy
appActivity = .ui.LoginActivity

#JDK
export JAVA_HOME=/Library/Java/Home
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:/usr/local/Cellar/ant/1.10.1/libexec/lib/ant-launcher.jar;
export PATH=$PATH:$JAVA_HOME/bin

#ANDROID
export ANDROID_HOME=/Users/zhenglong/Library/Android/sdk
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH

export PATH=”/Users/zhenglong/anaconda/bin:$PATH”
export ANT_HOME=/usr/local/Cellar/ant/1.10.1

python book

使用 ThreadPoolExecutor 相对于手动实现的一个好处在于它使得 任务提交者更方便的从被调用函数中获取返回值。例如,你可能会像下面这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

from concurrent.futures import ThreadPoolExecutor
import urllib.request

def fetch_url(url):
u = urllib.request.urlopen(url)
data = u.read()
return data

pool = ThreadPoolExecutor(10)
# Submit work to the pool
a = pool.submit(fetch_url, 'http://www.python.org')
b = pool.submit(fetch_url, 'http://www.pypy.org')

# Get the results back
x = a.result()
y = b.result()

例子中返回的handle对象会帮你处理所有的阻塞与协作,然后从工作线程中返回数据给你。 特别的,a.result() 操作会阻塞进程直到对应的函数执行完成并返回一个结果

多进程代码 示例

1
2
3
4
5
6
7
8
9
10
def find_all_robots(logdir):
'''
Find all hosts across and entire sequence of files
'''
files = glob.glob(logdir+'/*.log.gz')
all_robots = set()
with futures.ProcessPoolExecutor() as pool:
for robots in pool.map(find_robots, files):
all_robots.update(robots)
return all_robots

https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.1.tar.gz