Appium appium 测试 app,再相关操作界面改变后,获取现有的界面组件内容还是原先界面的内容,该怎么办?

haojie · 2016年08月03日 · 最后由 haojie 回复于 2016年08月31日 · 2379 次阅读

function check(xpath,condition){
        var string = browser.getText(xpath);
        assert.equal(string,condition); 
 }
//点击课程时长
browser.click("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.view.View[1]/android.widget.ScrollView[1]/android.view.View[1]/android.widget.FrameLayout[1]");  
//出现dialog选择时长      

browser.click("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.view.View[1]/android.view.View[1]/android.widget.TextView[2]");

// 断言
check('//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.view.View[1]/android.widget.ScrollView[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.TextView[2]','30分');

ppium 测试 app,再相关操作界面改变后,获取现有的界面组件内容还是原先界面的内容,该怎么办?
举例:我有一节课可以选择时长分别是 30 分钟,60 分钟,90 分钟,系统默认是 60 分钟,我进行选择操作选择 30 分钟之后,屏幕显示是 30 分钟,可是我这时对组件进行取值还是显示 60 分钟,无法取得界面变化后新的界面的组件值,该怎么办?

代码的意思:我默认是 60 分钟,点击选择 30 分钟,界面跟新之后再根据 xpath 获得 30 分钟的 textview 获取里面的值,但是取出来的还是 60 分钟。

共收到 15 条回复 时间 点赞

我觉得是组件的问题,显示更新后相关属性没有更新。

不过因为不知道你具体是什么属性,怎么获取组件值,获取什么组件值,所以具体我也不清楚啦

可以贴一下代码,这样便于大家给你分析问题

#1 楼 @chenhengjie123 代码我贴出来了,公司的 app,层级太多,我感觉可能是后台响应太慢

#2 楼 @adfghzhang 好的,我贴出来了。

#4 楼 @qumoy0315 此时你应该取"//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.view.View[1]/android.widget.ScrollView[1]/android.view.View[1]/android.widget.FrameLayout[1]" 这个 xpath 来对比了

#5 楼 @adfghzhang 不是这样的,你这个路径是整个 item 的路径,我要的是这个 item 里面 textview 的值

#6 楼 @qumoy0315 你最后要用来对比的 xpath 肯定不是你选择的 xpath,应该选择下拉列表最上面显示的那个 xpath 来对比。

#6 楼 @qumoy0315 也许是//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.widget.FrameLayout[1]/android.widget.ScrollView[1]/android.view.View[1]/android.view.View[1]/android.widget.TextView[1]" 具体根据你的 xpath 路径来

代码麻烦使用代码块。。。看到头都晕了。。。

haojie #10 · 2016年08月03日 Author

#8 楼 @adfghzhang 路径没错的

#11 楼 @qumoy0315 赞。

从你的代码上看,感觉是控件自身没有更新自己的属性值。你知道这具体是什么控件不?

haojie #13 · 2016年08月03日 Author

#12 楼 @chenhengjie123 js 写的混合开发界面

#13 楼 @qumoy0315 那这个控件是 webview 里面的内容?如果是这样,建议先 switch 成 webview 再获取数据。

haojie #15 · 2016年08月31日 Author

#14 楼 @chenhengjie123 问题解决了,是因为前面有个自定义控件,子控件太多,将这个自定义控件换掉以后就没有这个问题了,不过我还是不知道是什么原因,难道仅仅是控件太多影响底层控件的属性改变么?(公司的界面是叠加在一起的,假设有三个界面,三个界面其实是写在同一个布局里的,第一个界面在醉上面,第三个界面在最下面)

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