Appium 【已经解决】appium 运行示例 android_contact.py 报错,麻烦帮忙看下

耿纪坤 · 2014年04月16日 · 最后由 耿纪坤 回复于 2014年04月18日 · 1733 次阅读

菜鸟一枚,实在不知道自己错在哪里了~~麻烦帮忙看下
android_contact.py 在 c 盘根目录下

1、用 npm 安装的 appium
2、把 ContactManager.apk 放在了 E:\test 路径:E:\test\ContactManager.apk
3、启动了 appium 如图:

4、脚本 android_contact.py 如图:

#-*- coding:utf-8 -*-
import os
from selenium import webdriver

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

desired_caps = {}
desired_caps['device'] = 'Android'
desired_caps['browserName'] = ''
#版本对应手机版本
desired_caps['version'] = '4.2.2'
#路径改了
desired_caps['app'] = PATH('E:\test\ContactManager.apk')
desired_caps['app-package'] = 'com.example.android.contactmanager'
desired_caps['app-activity'] = '.ContactManager'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

el = driver.find_element_by_name("Add Contact")
el.click()

textfields = driver.find_elements_by_tag_name("textfield")
textfields[0].send_keys("My Name")
textfields[2].send_keys("someone@somewhere.com")

driver.find_element_by_name("Save").click()

driver.quit()

5、报错:如图


共收到 21 条回复 时间 点赞

额。。日志很清楚嘛。一个路径和你设置的路径重了。C:E:

#1 楼 @monkey 那我把其中 1 路径删除就可以了吧

#1 楼 @monkey

多余的路径删除了,我就用的 appium 自带的路径~可还是报错

#1 楼 @monkey

#-*- coding:utf-8 -*-
import os
from selenium import webdriver

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

desired_caps = {}
desired_caps['device'] = 'Android'
desired_caps['browserName'] = ''
#版本对应手机版本
desired_caps['version'] = '4.2.2'
#路径改了
desired_caps['app'] = PATH('C:\appium-master\sample-code\apps\ContactManager\ContactManager.apk')
desired_caps['app-package'] = 'com.example.android.contactmanager'
desired_caps['app-activity'] = '.ContactManager'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

el = driver.find_element_by_name("Add Contact")
el.click()

textfields = driver.find_elements_by_tag_name("textfield")
textfields[0].send_keys("My Name")
textfields[2].send_keys("someone@somewhere.com")

driver.find_element_by_name("Save").click()

driver.quit()

#4 楼 @jikunsishen 你看下,我也不知道为什么 windows 上会多出来 “C:\”。你从 log 中看,路径还是不对的

#5 楼 @monkey 但我脚本是对的吧~

#6 楼 @jikunsishen 额。。这个不是 sample 么。。= =

#7 楼 @monkey 恩,是呢,但我就跑步起来呢

你直接扔 C 盘下面,然后地址写 C 盘的地址,但是将 C:\去掉看看

#9 楼 @monkey 好耐心啊。。。

#10 楼 @lihuazhang 我觉得这个问题和那个人的问题一样。。

#11 楼 @monkey 不一样的。那一个是 cross device 了, 是 nodejs 的一个问题。 这个是纯粹路径每对。属于粗心问题。

#12 楼 @lihuazhang log 的路径好焦虑。。。

#9 楼 @monkey 我试试

#13 楼 @monkey

#-*- coding:utf-8 -*-
import os
from selenium import webdriver

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

desired_caps = {}
desired_caps['device'] = 'Android'
desired_caps['browserName'] = ''
#版本对应手机版本
desired_caps['version'] = '4.2.2'
#路径改了
desired_caps['app'] = PATH('ContactManager.apk')
desired_caps['app-package'] = 'com.example.android.contactmanager'
desired_caps['app-activity'] = '.ContactManager'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

el = driver.find_element_by_name("Add Contact")
el.click()

textfields = driver.find_elements_by_tag_name("textfield")
textfields[0].send_keys("My Name")
textfields[2].send_keys("someone@somewhere.com")

driver.find_element_by_name("Save").click()

driver.quit()

成功了~谢谢!我太粗心了~

#12 楼 @lihuazhang 我就是太粗心了~ 谢谢了哈

#11 楼 @monkey

#-*- coding:utf-8 -*-
import os
from selenium import webdriver

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

desired_caps = {}
desired_caps['device'] = 'Android'
desired_caps['browserName'] = ''
#版本对应手机版本
desired_caps['version'] = '4.2.2'
#路径改了
desired_caps['app'] = PATH('ContactManager.apk')
#什么意思?
desired_caps['app-package'] = 'com.example.android.contactmanager'
#什么意思?
desired_caps['app-activity'] = '.ContactManager'
#什么意思
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

#找到添加按钮?
el = driver.find_element_by_name("Add Contact")
#点击button
el.click()

#
textfields = driver.find_elements_by_tag_name("textfield")
#添加
textfields[0].send_keys("GENGJIKUN")
#添加
textfields[1].send_keys("15201558593")
#添加
textfields[2].send_keys("jikunshishen@163.com")
#点击保存
driver.find_element_by_name("Save").click()
#退出
driver.quit()

能帮我添下注释么?

#17 楼 @jikunsishen 这个文档上有解释的~~~

#18 楼 @monkey 哪个文档?

#19 楼 @jikunsishen appium 官方文档

desired_caps['app'] = PATH('ContactManager.apk')

是必须的吗?

如果不需要安装,直接运行机器里已经安装好的应用,要怎么处理?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册