问题:
页面上有两个下拉菜单选项,选择月份的,一个起始月份,一个终止月份,要求起始月份和终止月份一样(不知道为什么一样的话为什么还设计成点击两次而不是直接选择一个月份就可以了,页面就是这么设计的),选择的时候根据月份,第二个下拉菜单能找到元素,但是点击不到。
尝试过程:
(1)click element //*[contains(@text,'9月')]
(2)click element //*[contains(@text,'9月')][1]
(3)click element xpath=/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.view.ViewGroup[2]/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.view.ViewGroup/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup[9]/android.widget.TextView
(1)和(2)方案能找到元素,不报错,但是点击不到。
(3)成功了一次之后,不知为何再次执行的时候失败了。
原因分析:
选择起始月份的时候页面已经有一个9月,所以截止月份同样用9月定位,能找到元素,但是点击的是错误的位置。
最终解决方案:
通过appium观测到菜单项所在的bounds值[307,1651][539,1708],然后根据页面像素值计算其相对位置,直接用Click A Point点击像素点,解决。
代码语言:javascript复制 ${screenwidth} Get Window Width
${screenheight} Get Window Height
${x} Evaluate ${screenwidth}*${0.4}
${y} Evaluate ${screenheight}*${0.72}
Click A Point ${x} ${y}