appium

Appium定位方式总结

这一生的挚爱 提交于 2019-12-17 15:09:08
通过appium-desktop定位元素 ClassName Android Android的class属性对应ClassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性) iOS iOS的type属性对应CLassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性) ID Android Android的resource-id对应ID定位方式,这个id也可能存在重复情况,可以通过index来获取需要的元素。(从0开始查找dom树中的同名resource-id属性) 使用appium-desktop来获取元素时,如果提示有id的定位方式,则可以只接获取,代表唯一。 XPATH Android Android的Xpath定位与PC的XPATH定位大同小异,可以通过相对路径的定位方式定位,区别在于,这里相对路径定位的//后只可以接Android的class属性或*。(//android.widget.Button[@text="登 录"]) iOS iOS10 以上使用XCUITest框架后,原生框架不支持XPATH,Appium进行了转换,速度很慢不建议使用。 AccessibilityId Android

2020即将到来!DevExpress Winforms开发有哪些新功能值得期待?

我怕爱的太早我们不能终老 提交于 2019-12-17 10:35:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 下载DevExpress v19.2完整版 DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。DevExpress Winforms技术团队发布了一些与WinForms相关的功能清单,预计将在2020年实现并发布在新版本中。为像所有DevExpress用户提供更好的体验,欢迎在文章末尾评论反馈,您的想法很有可能被采纳哦! 支持.NET Core(v20.1 & v20.2) 在2020年,技术软对将从.NET Core v3切换到3.1 LTS(长期支持),微软在几天前发布了此版本。在整个2020年技术团队将对.NET Core产品线进行多项增强,其中包含设计器对话框、向导和Template Gallery模板。此外,一旦框架发布将继续提供对.NET 5的支持。 Appium自动化UI测试支持(v20.1) 最近发布了一篇有关 Appium以及如何将其用于基于DevExpress的WinForms应用程序测试 的教程,在来年全面测试所有DevExpress WinForms控件,并正式宣布对激活的WinForms用户的Appium支持。 WinForms Data Grid 支持悬停状态(v20.1) WinForms Data

How to setup Appium in Ubuntu for android

…衆ロ難τιáo~ 提交于 2019-12-17 06:46:27
问题 I am new in appium (automation testing technology). I'm using a PC running Ubuntu Linux. I have searched about this topic but I have not got any useful tutorial. Can anyone point me to the right documentation? 回答1: Do not install nodejs through apt-get, which will need sudo rights and appium will not work if node is installed as sudo user. If you have already installed remove it using sudo apt-get remove nodejs sudo apt-get remove npm Download latest nodejs linux binaries form http://nodejs

Appium(十):元素定位(加强版)

早过忘川 提交于 2019-12-16 13:04:02
1. 元素定位 写完上一篇元素定位的博客,发现实用性基本为零。这几天真的烦死我了,一直在找资料,还去看了一遍appium官网文档。最后结合着selenium的定位方法,测试出几种可行的元素定位方法。 1.1 层级定位 什么是层级定位呢? 在很多的自动化中如果只是靠简单的定位是没有办法完成自动化的。有的元素的id、name、className都是一样的,xpath定位效率低下,并且在appium中,可以使用的属性非常少,这个时候我们就需要使用层级定位了。 我们可以看到,QQ天气和微视的class都是相同的, 接下来我们用代码试一试。 # coding:utf-8 from appium import webdriver from time import sleep # 初始化 desired_caps = {} # 使用哪种移动平台 desired_caps['platformName'] = 'Android' # Android版本 desired_caps['platformVersion'] = '5.1.1' #使用adb devices -l 查询,当有多台设备时,需要声明 desired_caps['deviceName'] = '127.0.0.1:62001' #包名 desired_caps['appPackage'] = 'com.tencent

Appium简单框架分享

旧街凉风 提交于 2019-12-16 06:40:31
首先说明下,手机UI自动化伴随着APP迭代,维护成本较高,但是为了保证客户端功能验证效率,有时是一个不得不做的项目。 介绍一下我做的框架了结构: business_action:存放业务层场景类,将业务操作的完成场景封装成类放在这个包里。 common:存放公用的方法,例如封装的操作事件,为了脚本中减少冗余代码量 confing:存放维护的页面元素,以配置文件ini的格式较为传统,但是可以通过汉字做变量,方便日后的整理维护 data:存放公共测试数据和用于生成测试数据的接口自动化脚本 log:测试日志生成 unitest_case:4:引入unittest模块用于管理和执行场景用例 下面是每个目录下的一些示例: 这个就是使用common中封装好的方法,所以在编写场景脚本的时候很方便 这个就是疯转好的元素操作方法。 将元素类型传为参数的方法,第一张业务场景中就是直接使用这个方法编写的。 根据不同类型将元素放在四个配置文件中,给读取配置文件的方法中加上参数控制读取目标文件,这个参数传到业务场景的类中就是第二个数字参数。 花无缺吃豆豆在这里就是交流这一种最为简单的框架思路,相信初学者看了可以设计出更为完善的框架。 来源: CSDN 作者: 花无缺吃豆豆 链接: https://blog.csdn.net/qq_42358614/article/details/103474007

appium API 之键盘操作

拥有回忆 提交于 2019-12-15 04:13:39
appium API 之键盘操作 模拟键盘输入也是非常重要的操作。这一小节来介绍那些关于键盘的操作。 1、sendKeys()方法 方法: sendKeys() 用法: driver.findElements(By.name(“Name”)).sendKeys(“jack”); 2、pressKeyCode()方法 除此之外,appium扩展提供了pressKeyCode()方法。该方法Android特有。 方法: pressKeyCode() 发送一个键码的操作。需要一个入参。 driver.pressKeyCode(29); // 字母“a” 如果想点击Android的HOME键应该怎么实现的呢?如下 java driver.pressKeyCode(AndroidKeyCode.HOME); 下面提供Android keycode参考表: 电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK 返回键 4 KEYCODE_SEARCH 搜索键 84 KEYCODE_CAMERA 拍照键 27 KEYCODE_FOCUS 拍照对焦键 80 KEYCODE_POWER 电源键 26 KEYCODE_NOTIFICATION 通知键 83

How to screen record iOS-real device with command?

混江龙づ霸主 提交于 2019-12-14 04:04:27
问题 I need to screen record iOS from iMAC for the purpose of test automation. I found commands for Android and iOS-Simulator which are: adb screenrecord /sdcard/123.mp4 xcrun simctl io recordVideo --type=mp4 However, I need a command for iOS-real device. The purpose of this is for taking video of device during each of test automation sessions. 回答1: iOS 11 has built-in Screen Recording for real devices, you need to check if its possible to do run/stop/getFile from device via command line tools or

I get an error when trying to sort first name alphabetically and sort last name alphabetically in Appium from elements names

风格不统一 提交于 2019-12-13 17:18:49
问题 I have 3 elements and they have 3 names with last names its a button. I need to figure out how to check if they sorted by first name and then by last name.Page object for elements is ListV_Sorted. I think I just sorted by first name elements. 0 element = Jack Daniels, 1 element = John Fera, 2 element = Mike Durov. ListV is a page object for the elements. It says expected true but found false. //Verifies if APs Names Sorted Alphabetically @SuppressWarnings("unchecked") public void sortingOrder

Code Coverage with Appium for iOS

柔情痞子 提交于 2019-12-13 17:17:24
问题 This question seems to have been asked in a number of different flavours already, and so apologies in advance if I'm just missing something obvious here, but this still isn't clear to me... I'm running UIAutomation tests using Appium as part of a functional test suite, how do I go about generating code coverage metrics from that suite? Ideally be able to visualise these results in Jenkins then, as part of a CI flow. I see one guy has a solution here, and I tried implementing this, but the

ScrollTo and ScrollToExact equivalent for webView in appium for android

僤鯓⒐⒋嵵緔 提交于 2019-12-13 16:08:19
问题 I am automating android app using appium (java). For scrolling on native components, I use scrollTo() and scrollToExact() methods. But in case of webView inside the app ; these methods are not working. UPDATE: I have tried these two methods also: public static void scrollNavigation(AppiumDriver<MobileElement> wd, String widID, String target, String direction) { JavascriptExecutor js = (JavascriptExecutor) wd; HashMap<String, String> swipeObject = new HashMap<String, String>(); swipeObject.put