Appium 【终于找到原因了 selendroid0.9.0 已经修复了】appium +selendroid xpath 为什么有问题,原因请进

chuyaoyao · 2014年02月28日 · 最后由 chuyaoyao 回复于 2014年03月07日 · 1392 次阅读

可能是被测的 app 的特殊性
app 描述:因为是我测的 app 是新闻,启动后,有个封面,姑且叫界面 1,启动 3s 中会自动跳过(注意是自动跳过),然后到了界面 2
我在代码中用了一句 xpath

@driver.find_element(:xpath,"//HorizontalScrollView")# 我是想获取我界面 2 上的元素
问题就出在这里!!!
selendroid 模式下当前句柄是界面 1 的句柄,只能获取启动时的那个界面 1 上的元素
我想在界面 2 上,获取元素就打大错特错了
但是我切换到 android 模式下就能找到该元素
原因可能是 android 模式获取的当前界面(当时是界面 2)

我现在还没有找到使 selendroid 定位到当前句柄下的办法,selendroid 的资料太少
所以请大家帮我想想办法

共收到 21 条回复 时间 点赞

我觉得你能找到整个原因 , 已经是很了不起了, 知道了原因 可以去看看 selendroid 的方法. 看看 driver 有没有提供特别好的方法来刷新句柄列表

你是 hybird 的应用么? 你可以看看当前的 context 是啥?

你可以把 pagesource 打出来看看。

了不起~~~求分享具体的过程~

#3 楼 @benlooking 如何打出 pagesource 是 native-app 哦

请问如何更新 appium 中 selendroid 版本呢,我在文件夹里面没有发现 selendroid 的 jar 包 请问大家有知道的么@seveniruby

#8 楼 @chuyaoyao 因该有的, 他依赖 selenroid 的 jar 包, 你可以去翻翻 npm 的安装目录.
从源代码安装也是可以的, 可以使用 git submodule 来升级.

#8 楼 @chuyaoyao 使用 git submodule 集成进来的。https://github.com/appium/appium/issues/2005 你发的这个 issue 说的很清楚了呀。

@lihuazhang 恩恩是的 我已经编译好了 appium.js 但是执行的时候提示:
info: Welcome to Appium v0.16.0
info: Appium REST http interface listener started on 0.0.0.0:4723
info - socket.io started
debug: Appium request initiated at /wd/hub/session
debug: Request received with params: {"desiredCapabilities":{"app":"C:\Users\c
huyaoyao\Downloads\AppiumForWindows\Appium\apk\3.2.1.apk","browerName":"","
platfrom":"windows","version":"4.1","device":"selendroid","app_activity":".ui.In
dexActivity","app-wait-activity":".ui.ColdStartActivity","deviceScreenshot":"tru
e","app_package":"com.baidu.news"}}
error: Trying to run a session for device 'selendroid' but that device hasn't be
en configured. Run config
info: Got configuration error, not starting session
info: Cleaning up appium session
error: Failed to start an Appium session, err was: Error: Device selendroid not
configured yet
info: Error: Device selendroid not configured yet
at Appium.configure (D:\sorftware\appium-master\lib\appium.js:181:15)
at Appium.start (D:\sorftware\appium-master\lib\appium.js:82:10)
at exports.createSession (D:\sorftware\appium-master\lib\server\controller.j
s:151:16)
at callbacks (D:\sorftware\appium-master\node_modules\express\lib\router\ind
ex.js:164:37)
at param (D:\sorftware\appium-master\node_modules\express\lib\router\index.j
s:138:11)
at pass (D:\sorftware\appium-master\node_modules\express\lib\router\index.js
:145:5)
at nextRoute (D:\sorftware\appium-master\node_modules\express\lib\router\ind
ex.js💯7)
at callbacks (D:\sorftware\appium-master\node_modules\express\lib\router\ind
ex.js:167:11)
at D:\sorftware\appium-master\lib\server\controller.js:34:7
at callbacks (D:\sorftware\appium-master\node_modules\express\lib\router\ind
ex.js:164:37)
info: Responding to client with error: {"status":33,"value":{"message":"A new se
ssion could not be created. (Original error: Device selendroid not configured ye
t)","origValue":"Device selendroid not configured yet"},"sessionId":null}
POST /wd/hub/session 500 20ms - 222b

#11 楼 @chuyaoyao 需要更新 .appiumconfig.json

#12 楼 @lihuazhang 里面就一个话 {"android":{"version":"0.16.0"}}

#12 楼 @lihuazhang 要版本号 +1 么 然后从新 reset 么 还是要改其他的地方

#14 楼 @chuyaoyao grunt setConfigVer:selendroid 试试看

#15 楼 @lihuazhang 这句命令 在哪里运行呀 我是 windows 环境 没有找到 setConfigVer:selendroid 文件呀

#16 楼 @chuyaoyao 在 Appium 库根目录下。

#17 楼 @lihuazhang 我没装 grunt
D:\sorftware\appium-master>grunt setConfigVer:selendroid
'grunt' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
有类似的命令么 这句话是什么意思呀

找到了 grunt 在这个目录下 appium-master\node_modules.bin 哈哈 多谢@lihuazhang

#19 楼 @chuyaoyao 你试试看 不一定行。。

#20 楼 @lihuazhang 我 build 文件夹里面没有 selendroid.apk 是不是编译没成功呀?可是我 reset.bat 的时候也没报错哇。奇怪
error: Failed to start an Appium session, err was: Error: ENOENT, stat 'D:\sorft
ware\appium-master\build\selendroid\selendroid.apk'
info: Error: ENOENT, stat 'D:\sorftware\appium-master\build\selendroid\selendroi
d.apk'

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册