偶然的机会遇到了这个工具——Appium Studio, 在官网是这么解释的

Get your Appium testing projects going within minutes
Install Appium Studio with a single click along with all the required development tools. Use the intuitive GUI to easily develop new tests or execute existing Appium testing projects on any local or remote devices.

让Appium测试项目在几分钟内完成
只需单击一下即可安装Appium Studio以及所有必需的开发工具。 使用直观的GUI轻松开发新测试或在任何本地或远程设备上执行现有的Appium测试项目。

是一个可以录制脚本,可以运行测试用例,它可以在windows电脑上,链接ios设备做ios的测试,这里为这个工具点个赞,我们测试ios应用不在用ios设备也能进行测试了。

下载地址:https://experitest.com/mobile-test-automation/appium-studio/

其他需要配置的appium测试环境。

安装后,

大体界面就是这样的,

我们链接设备,点击按钮,增加你的设备,我链接了一台安卓模拟器,一台iphone6,(注意,adb环境可能识别不了设备,去appium studo 安装目录下复制adb.exe 去替换模拟器下面的adb,修改为对应的包就可以)

那么

我们选择安装我们的应用,到指定设备上,也可以关闭启动应用, 可以选择配置,

当我们选择后,

会给我们生成对应的脚本,我们可以切换不同的脚本

都是可以很好的切换。

那么怎么录制我们的脚本呢,启动app,

选择

录制,

然后我们去模拟器去操作就可以

这样就给我们操作完,点击关闭,自动吧录制的步骤给我们添加上去,

下面生成对应的脚本,

我们点击保存按钮进行保存

录制脚本如下python版本

import unittest
import time
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions class sssss(unittest.TestCase):
reportDirectory = 'reports'
reportFormat = 'xml'
dc = {}
testName = 'sssss'
driver = None def setUp(self):
self.dc['reportDirectory'] = self.reportDirectory
self.dc['reportFormat'] = self.reportFormat
self.dc['testName'] = self.testName
self.dc['udid'] = '127.0.0.1:62001'
self.dc['app'] = 'C:\\Users\\Administrator\\AppData\\Roaming\\appiumstudio\\apk\\com.aixuetan.onlinecom.aixuetang.mobile.activities.LaunchActivity.2.apk'
self.dc['appPackage'] = 'com.aixuetan.online'
self.dc['appActivity'] = 'com.aixuetang.mobile.activities.LaunchActivity'
self.dc['instrumentApp'] = 'true'
self.dc['platformName'] = 'android'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub',self.dc) def testsssss(self): self.driver.find_element_by_xpath("xpath=//*[@id='course_image' and (./preceding-sibling::* | ./following-sibling::*)[@text='高一语文通用版(全年班)']]").click()
self.driver.find_element_by_xpath("xpath=//*[@text='已报名76423人']").click()
self.driver.find_element_by_xpath("xpath=//*[@id='ll_enroll']").click()
self.driver.find_element_by_xpath("xpath=//*[@text='03-进行更深层次的阅读(一)——赏析评价能力的提升(上)']").click()
self.driver.find_element_by_xpath("xpath=//*[@text='高一语文通用版(全年班)']").click()
self.driver.find_element_by_xpath("xpath=//*[@id='course_image']").click()
self.driver.find_element_by_xpath("xpath=//*[@id='course_image']").click()
self.driver.find_element_by_xpath("xpath=//*[@id='course_image']").click()
self.driver.find_element_by_xpath("xpath=//*[@text='已报名76423人']").click()
self.driver.find_element_by_xpath("xpath=//*[@text='加入课程']").click()
self.driver.find_element_by_xpath("xpath=//*[@id='et_password']").click()
self.driver.find_element_by_xpath("xpath=//*[@id='et_username']").send_keys('')
self.driver.find_element_by_xpath("xpath=//*[@id='et_password']").send_keys('')
self.driver.find_element_by_xpath("xpath=//*[@id='tv_login']").click() def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()

java版本如下

//package <set your test package>;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.TouchAction;
import java.time.Duration;
import io.appium.java_client.remote.MobileCapabilityType;
import io.appium.java_client.android.AndroidKeyCode;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.By;
import org.testng.annotations.*;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.logging.Level; public class sssss {
private String reportDirectory = "reports";
private String reportFormat = "xml";
private String testName = "sssss";
protected AndroidDriver<AndroidElement> driver = null; DesiredCapabilities dc = new DesiredCapabilities(); @BeforeMethod
public void setUp() throws MalformedURLException {
dc.setCapability("reportDirectory", reportDirectory);
dc.setCapability("reportFormat", reportFormat);
dc.setCapability("testName", testName);
dc.setCapability(MobileCapabilityType.UDID, "127.0.0.1:62001");
dc.setCapability(MobileCapabilityType.APP, "C:\\Users\\Administrator\\AppData\\Roaming\\appiumstudio\\apk\\com.aixuetan.onlinecom.aixuetang.mobile.activities.LaunchActivity.2.apk");
dc.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.aixuetan.online");
dc.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "com.aixuetang.mobile.activities.LaunchActivity");
dc.setCapability("instrumentApp", true);
driver = new AndroidDriver<>(new URL("http://localhost:4723/wd/hub"), dc);
driver.setLogLevel(Level.INFO);
} @Test
public void testsssss() {
driver.findElement(By.xpath("//*[@id='course_image' and (./preceding-sibling::* | ./following-sibling::*)[@text='高一语文通用版(全年班)']]")).click();
driver.findElement(By.xpath("//*[@text='已报名76423人']")).click();
driver.findElement(By.xpath("//*[@id='ll_enroll']")).click();
driver.findElement(By.xpath("//*[@text='03-进行更深层次的阅读(一)——赏析评价能力的提升(上)']")).click();
driver.findElement(By.xpath("//*[@text='高一语文通用版(全年班)']")).click();
driver.findElement(By.xpath("//*[@id='course_image']")).click();
driver.findElement(By.xpath("//*[@id='course_image']")).click();
driver.findElement(By.xpath("//*[@id='course_image']")).click();
driver.findElement(By.xpath("//*[@text='已报名76423人']")).click();
driver.findElement(By.xpath("//*[@text='加入课程']")).click();
driver.findElement(By.xpath("//*[@id='et_password']")).click();
driver.findElement(By.xpath("//*[@id='et_username']")).sendKeys("1111111");
driver.findElement(By.xpath("//*[@id='et_password']")).sendKeys("11111");
driver.findElement(By.xpath("//*[@id='tv_login']")).click();
} @AfterMethod
public void tearDown() {
driver.quit();
}
}

然后当你没有选中测试用例步骤,他会给你注释掉,点击run按钮,启动测试,

我们可以看到log上面有日志输出,

运行到步骤会选中步骤,运行完,自动生成测试报告

一些重要的信息也会展示出来

还可以看到步骤的dubeg信息,每个步骤都会有截图

可以选择最近的查看测试报告,

选择all summaries  reposrt  统计了所有运行的,直观,

下面详细的记录日志。

可以录制,可以运行现有脚本,每个步骤 都有截图,还可以生成批量的测试报告,有没有很简单,关键它可以在windows执行ios测试,

推荐大家去尝鲜。

Appium Studio 初体验(windows做ios自动化,录制appium脚本)的更多相关文章

  1. 使用Appium做手机自动化录制问题

    最近在使用appium做Android手机自动化脚本录制, 发现点击“tap”时,一直没有用,页面还是不能跳转. 咋办?发愁... 于是看到旁边有个“sendkeys”,那是不是能够直接发送参数不就行 ...

  2. 在VScode 中使用RT-Thread Studio初体验

    前言 工欲善其事,必先利其器,VScode是什么东东,想必大家都非常熟悉了,丰富的插件,有好的开发界面,是很多程序开发者的不二之选,RT-Thread竟然也开发了Vscode插件,真的是非常的nice ...

  3. Docker学习<一>--初体验Windows环境下安装

    背景 今天想试用spring boot与jwt协议的实现,配套就需要使用redis,但redis似乎windows环境版本部署起来不是那么舒心,果断尝试使用docker. 下载 下载地址: 稳定版:h ...

  4. .net程序员的android studio 初体验 (环境设置2022年10月)

      很久以前用DevExtreme写的一个Hybird APP要添加蓝牙打印功能,但是用来打包APP的phonegap被adobe关闭了,所以,只能自己用cordova去打包安卓APP,不得已,研究了 ...

  5. Android Studio 初体验

    Google在I/O */

  6. 一个IOS自动化打包的脚本

    网上找了一个脚本,在其中进行了修改,只需要一条命令就可以了 支持自动导入配置文件 支持自动安装p12证书 支持自动修改版本号和build版本号 支持自动修改app显示名称 支持自动修改bundle i ...

  7. Windows Embedded Compact 7初体验

    Windows Embedded Compact 7初体验 Windows Embedded Compact 7已经出来半年多了,一直没时间搞.最近它又出了Refresh的版本,电脑也换了个1T的硬盘 ...

  8. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  9. 文档数据库RavenDB-介绍与初体验

    文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...

随机推荐

  1. vs2012\2013\2015 添加 ActiveX制作控件插件 Visual Studio Installer

    由于vs2012.2013 之后的版本升级,之前用vs2010 开发制作的ActvieX控件在高版本12.13上不兼容,需要安装插件支持: 如果是vs2013版本,可参照以下方式下载后安装,若是其他版 ...

  2. 第六章 Hyper-V 2012 R2 的检查点

    "检查点"是 Windows Server 2012 R2 中对 Windows Server 2012 及以前版本的 Hyper-V"快照"功能的新称呼.之所 ...

  3. Scrapy爬取遇到的一点点问题

    学了大概一个月Scrapy,自己写了些东东,遇到很多问题,这几天心情也不大好,小媳妇人也不舒服,休假了,自己研究了很久,有些眉目了 利用scrapy 框架爬取慕课网的一些信息 步骤一:新建项目 scr ...

  4. 用Python实现数据结构之二叉搜索树

    二叉搜索树 二叉搜索树是一种特殊的二叉树,它的特点是: 对于任意一个节点p,存储在p的左子树的中的所有节点中的值都小于p中的值 对于任意一个节点p,存储在p的右子树的中的所有节点中的值都大于p中的值 ...

  5. Ubuntu18.04 更换源

    在虚拟机新建一个Ubuntu18.04.1-live-server-amd64当做服务器 在安装软件时报错: slave@slave:~$ sudo -s[sudo] password for sla ...

  6. c#中//注释和///注释的区别

    c#中//注释和///注释的区别 ///会被编译,//不会所以使用///会减慢编译的速度(但不会影响执行速度)///会在其它的人调用你的代码时提供智能感知 也是一种注释,但是这种注释主要有两种作用:1 ...

  7. Spring AOP 和 AspectJ

    现如今有许多个可用的 AOP 库,使用这些库需要能够回答以下问题: 是否与现有的或新的应用程序兼容? 在哪里可以使用 AOP ? 如何迅速与应用程序集成? 性能开销是多少? 在本文中,我们将回答这些问 ...

  8. API--ResponseBody-类

    import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInc ...

  9. Mashmokh and Numbers CodeForces - 415C

    题意:就是n个数和k,每次按顺序那两个数,最大公约数的和为k. 思路:注意:当n=1,k>0时一定不存在,还有n=1,k=0时为1即可. 然后再正常情况下,第一组的最大公约数为k-n/2+1即可 ...

  10. [ASP.NET]ScriptManager控件使用

    目录 概述 局部刷新 错误处理 类型系统扩展 注册定制脚本 注册 Web 服务 在客户端脚本中使用认证和个性化服务 ScriptManagerProxy 类 添加 ScriptManager 控件 客 ...