Appium Studio 初体验(windows做ios自动化,录制appium脚本)

简介: Appium Studio 初体验(windows做ios自动化,录制appium脚本)

 偶然的机会遇到了这个工具——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测试环境。


安装后,


image.png


大体界面就是这样的,


我们链接设备,点击按钮


image.png


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


image.png


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

当我们选择后,


image.png


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


image.png


都是可以很好的切换。那么怎么录制我们的脚本呢,启动app,


选择


image.png


录制,

 

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


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


下面生成对应的脚本,


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


录制脚本如下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('1111111')
        self.driver.find_element_by_xpath("xpath=//*[@id='et_password']").send_keys('11111')
        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上面有日志输出,


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


image.png


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


image.png


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


image.png


image.png

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

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


image.png


下面详细的记录日志

image.png


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



相关文章
|
2天前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
11 4
|
4天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【9月更文挑战第23天】在本文中,我们将探索如何通过编写Python脚本来自动化常见的系统管理任务,从而提升效率并减少人为错误。文章将介绍基础的Python编程概念、实用的库函数,以及如何将这些知识应用于创建有用的自动化工具。无论你是新手还是有经验的系统管理员,这篇文章都将为你提供有价值的见解和技巧,帮助你在日常工作中实现自动化。
|
6天前
|
运维 监控 安全
自动化运维:使用Python脚本简化日常任务
【9月更文挑战第21天】在快速迭代的软件开发环境中,运维工作往往因为重复性高、易出错而被诟病。本文将介绍如何通过编写简单的Python脚本来自动化这些日常任务,从而提升效率和减少错误。我们将以实际案例为基础,展示如何从零开始构建一个自动化脚本,并解释其背后的原理。文章旨在启发读者思考如何利用编程技能来解决工作中的实际问题,进而探索技术与日常工作流程结合的可能性。
|
2天前
|
Python Windows
python之windows脚本启动bat
python之windows脚本启动bat
|
8天前
|
机器学习/深度学习 人工智能 运维
自动化运维:从脚本到工具的演进之路
【9月更文挑战第19天】在数字化时代的浪潮中,自动化运维如同一剂强心针,赋予IT系统以生命力。本文将带领读者穿梭于自动化运维的历史长河,探索它的起源、成长与变革。我们将一同见证如何从简单的shell脚本起步,逐步演化为复杂的自动化工具和平台。通过深入浅出的语言,我们不仅分享实用的代码示例,还将探讨自动化运维的最佳实践、面临的挑战以及未来的发展趋势。让我们开始这段旅程,解锁自动化运维的秘密,提升你的技术洞察力。
|
6天前
|
存储 运维 监控
自动化运维的崛起:如何利用脚本简化日常任务
【9月更文挑战第21天】在快速发展的IT行业中,自动化运维不再是可选项,而是提升效率、减少人为错误的必由之路。本文将深入探讨自动化运维的重要性,并通过一个实际的脚本示例,展示如何将日常重复的运维任务自动化,从而释放运维人员的时间,让他们专注于更有价值的工作。
|
22天前
|
运维 Ubuntu Devops
自动化运维工具的魅力:Ansible入门
【9月更文挑战第5天】在快速变化的IT世界里,自动化运维不再是可选项,而是必需品。Ansible,一款简单却强大的自动化工具,正成为众多DevOps工程师的首选。本文将带你了解Ansible的基本概念、安装步骤以及如何编写简单的Playbook,从而开启你的自动化之旅。
67 36
|
2天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为保障企业IT系统稳定运行的关键环节,正经历着前所未有的变革。本文将探讨如何通过实施自动化和引入智能化技术,构建一个更加高效、可靠的运维体系,以应对日益复杂的业务需求和技术挑战。
10 1
|
19天前
|
存储 弹性计算 运维
自动化监控和响应ECS系统事件
阿里云提供的ECS系统事件用于记录云资源信息,如实例启停、到期通知等。为实现自动化运维,如故障处理与动态调度,可使用云助手插件`ecs-tool-event`。该插件定时获取并转化ECS事件为日志存储,便于监控与响应,无需额外开发,适用于大规模集群管理。详情及示例可见链接文档。
|
12天前
|
机器学习/深度学习 运维 安全
构建高效运维体系:从自动化到智能化的演进之路
在数字化转型的浪潮中,运维管理作为信息技术基础设施的重要支柱,正经历着从传统手工操作向自动化、智能化的深刻变革。本文将探讨如何通过引入自动化工具和平台,实现运维流程的标准化与效率提升;进而利用大数据分析和人工智能技术,迈向预测性维护和智能决策支持的高级阶段。通过案例分析,揭示成功转型的关键因素,为运维专业人士提供一套可借鉴的升级路径。