律师网站建设 优帮云,扬州手机网站开发,招聘网站建设方案模板下载,销售牛的网站原生应用开发#xff0c;是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发#xff1b;HTML5#xff08;h5#xff09;应用开发#xff0c;是利用Web技术进行的App开发。目前#xff0c;市面上很多app都是原生和h5混合开发#xff0c…
原生应用开发是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发HTML5h5应用开发是利用Web技术进行的App开发。目前市面上很多app都是原生和h5混合开发这样做的好处在于
1开发效率高节约时间同一套代码Android和IOS基本都可用。
2更新和部署比较方便不需要每次升级都要上传到App Store进行审核了只需要在服务器端升级就可以。
3代码维护方便、版本更新快降低产品成本。以上内容引用自百度
使用appium对混和开发的app做自动化时会碰到不少坑。最近在用appium操作app中h5页面时碰到一个问题已经切换到webview中并且定位到了元素用click方法点击元素怎么都不起作用。这时候查看appium日志如图1发现click方法已经执行了但是手机上并没有执行这个动作。我以前用click方法是可以点击已定位的webview元素的所以我找前端研发工程问了一下找到了原因在手机端用js操作H5页面时click会有200-300ms延时后面写的页面很多都采用封装好的tap来进行点击这种情况下用click就不起作用。 图 1
接下来我想到用原生中tap方法先获取元素范围内坐标再进行tap点击代码如图2。结果在切到webview获取到元素中心坐标使用tap方法时报错因为webview中无法使用原生的tap方法。 图 2
于是我在webview中定位好元素后切回原生后使用tap方法但这个时候又碰到一个问题由于web页面坐标系与手机原生坐标系不一致同一个元素在webview中的坐标与在原生页面中的坐标不一致切出webview后tap依然点击不到这条路暂时也行不通了。
我想起appium中的webdriver是继承自selenium但是手势操作会不会有不同呢抱着试一试的心态查看了一下appium中的手势操作类TouchAction发现几行注释如图2 图 3
原来原生中的tap方法是appium作者为了适应selenium而写的于是我找到selenium中的TouchActions类发现也有tap方法如图 3。注 图 4
该方法中只有element参数没有坐标参数参数为坐标时无法点击。 尝试着用selenium下的tap方法成功实现伪代码如下
element getElement(driver,locationType,locatorExpression)
#该方法为我自己封装的获取element方法读者只需根据正常方法获取到元素即可。
tas TouchActions(driver)
#实例化一个TouchActions对象tas.tap(element)
本来以为此问题已经解决不料在运行第二次时该方法也失效了查看touch_actions中的代码如图5发现手势操作需要用perform再执行一下把action提交才会起作用问题解决。 图 5
附上源代码
from selenium.webdriver.common.touch_actions import TouchActions
def tap_element(locationType, locatorExpression):try:
element getElement(driver, locationTypelocationType, locatorExpressionlocatorExpression) #element可根据自己的方式获取
tas TouchActions(driver)
tas.tap(element).perform()
except Exception, e:raise eif __name____main__:
launchApp_smy_noReset() #启动app此方法自己封装
sleep(10) #留足够时间点击到调试页也可用程序跳转到h5页面
switch_to_webview() #切换到webview
tap_element(xpath,//*[iddetail]/div[4]/a[2])#调用刚封装好的tap_element方法
print 点击成功
switch_to_native() #切换到原生
print 切换成功最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你