RF+Appium 解决点击不到控件问题:不切换webview模式,直接操作Webview中各控件

RF+Appium 解决点击不到控件问题:不切换webview模式,直接操作Webview中各控件


点击不到控件问题:不切换webview模式,直接操作Webview中各控件

Appium Desktop 版本:1.9.0
Android 版本:7.1

android 6.0以上系统,无需切换webview模式就可以测试app中的webview,通过appium打开webview后,使用UiAutmatorviewer可以看到,webview中各控件可以像普通NATIVE控件一样可以捕捉到其控件信息。如下图:
RF+Appium 解决点击不到控件问题:不切换webview模式,直接操作Webview中各控件

但是,某些控件无法有效识别。例如,无法勾选✔同意协议控件。
RF+Appium 解决点击不到控件问题:不切换webview模式,直接操作Webview中各控件

一、个人解决方案

1. 思路

  1. 定位控件“我已阅读并同意”;
  2. 获取控件“我已阅读并同意”的大小(size);
  3. 通过控件“我已阅读并同意”来定位勾选✔同意协议控件的位置
  4. 封装关键字“Tap On A Point”点击此控件

二、找到并勾选✔同意协议控件

RF+Appium 解决点击不到控件问题:不切换webview模式,直接操作Webview中各控件
关键字:Tap A Point 点击控件

    def tap_a_point(self, x=0, y=0, duration=100):
        # Author: Allan
        """ Tap on a point"""
        self._info("Clicking on a point (%s,%s)." % (x,y))
        driver = self._current_application()
        action = TouchAction(driver)
        try:
            action.tap(x=float(x), y=float(y)).perform().release()
        except:
            assert False, "Can't tap on a point at (%s,%s)" % (x,y)