最近在用 Genymotion 做自动化测试。
使用 Genymotion 的部分包括:启动 Genymotion、打开模拟器的 GPS、设置当前的经纬度、关闭模拟器。

启动 Genymotion 的指令比较容易查到(把所有的模拟器存到 device_list 这个列表中,一个一个取出来)

for device in device_list:
    os.popen("player --vm-name '"+ device +"'")

目前比较麻烦的是:打开模拟器的 GPS、设置当前的经纬度
按照网上搜索到各种资料的说明,这里应该使用-c 的参数运行:

os.popen("genyshell -c gps setstatus enabled")
os.popen("genyshell -c gps setlatitude 39.5849")
os.popen("genyshell -c gps setlongitude 116.1824")

但实际运行的时候总是找不到命令而返回参数列表:
所以我现在的做法是使用 Genymotion 提供的另外一种方式,即外部文件存储参数-f:

os.popen("genyshell -f "+ genyshell_path)

这里的 genyshell_path 是存储指令的 genyshell 文件

请问有高手知道为什么-c 的指令在这里不能使用吗?

还有就是我没看到关闭 Genymotion 的命令及方法:
官网提供的只有关闭 genyshell 的方法,而 stackOverFlow 上也是只有人问,没人回答。
求教,有人知道这个关闭模拟器指令吗?

实际中,我使用的方式比较土鳖:
定义获取 pid 的函数

#获取player.exe的pid
def get_player_pid():
    listtask = os.popen("tasklist").read().split('\n')
    for m in listtask:
        if m[:10] == "player.exe" :
            return m[30:35]
            break

再使用命令杀掉这个 pid

#关闭掉当前的genymotion
pid = get_player_pid()
os.popen("taskkill /PID " + str(pid))
print("Close the emulator!")


↙↙↙阅读原文可查看相关链接,并与作者交流