appium简明教程 11 – 使用resource id定位

上一节乙醇带大家了解了appium的定位策略。实际上appium的控件定位方式是完全遵守webdriver的mobile扩展协议的。 这一节将分享一下如何使用resource id来定位android策略。 什么是resource id,这个不属于本文的范畴,大家可以点这里了解。 我们可以有两种方式来使用resource id进行定位: 使用findElement(By.id(“resourceId”))的方式。这也是原生的webdriver定义的方法,不过竟然在appium的官方文档里没有提及,属于隐藏技; 使用find_elements_by_android_uiautomator(‘ne […]

appium简明教程 10 – 控件定位基础

狭义上讲,UI级的自动化测试就是让机器代替人去点来点去的过程。 但机器去点什么(点上面还是点左边),怎么点(是长按还是轻触),这些东西是必须由代码的编写者所指示清楚的。 控件定位就是解决机器点什么的问题的。 一般说来,我们可以这样告诉机器:去点登陆按钮。 机器很笨,它并不知道什么是登陆按钮。因为登陆按钮是自然语言的描述。 如果你让一个人去点登陆按钮,那么他其实也是要经过一系列的脑补以后才可以做这件事的。

appium简明教程 8 – 那些工具

那片笑声让我想起我的那些tool 在我生命每个角落静静为我开着 我曾以为我会永远守在她身旁 今天我们已经离去在人海茫茫 她们都老了吧 都更新换代了吧 幸运的是我曾陪她们开发 啦…… 想她 啦…… 她还更新吗 啦…… 去呀 她们已经被风吹走散落在天涯 正所谓工欲善其事必先利其器,对于appium实战android来说,下面的这些工具(以windows系统为例)是必须熟练使用的。

appium简明教程 6 – 启动appium及android模拟器

一般情况下,我们都从命令行启动appium。 windows下,dos命令窗口输入 appium 如果该命令报错,那么请重装appium npm install -g appium 如果安装出错,请自行更换npm源。 npm -g –registry http://registry.cnpmjs.org install appium 然后请打开android的模拟器,如果没有请新建一个虚拟设备。请自行解除设备锁定(手动把屏幕解锁了),以防万一。

appium简明教程 3 – appium的安装 windows版

appium的哲学里有一条就是不重新发明轮子。同样,官方已经有明确的安装步骤了,因此在这里纯属搬砖。 原文地址 感谢testerhome的辛勤翻译。 限制 如果你在windows上安装appium,你没法使用预编译专用于OS X的.app文件,你也将不能测试IOS apps,因为appium依赖OS X专用的库来支持IOS测试。这意味着你只能通过在mac上来运行IOS的app测试。这点限制挺大。

appium简明教程 2 – appium的基本概念

Client/Server Architecture appium的核心其实是一个暴露了一系列REST API的server。 这个server的功能其实很简单:监听一个端口,然后接收由client发送来的command。翻译这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给appium server,appium server再把执行结果返回给client。 在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。狭义点理解,可以把client理解 […]

2014-忙碌的一年

2014年的总结已经在电脑里放了一个多月了,一直没放出来,细数下来,从2012年到现在,这是第三次写一年总结。匆匆忙忙的一年,2014年注定着这是一个非常繁忙的一年。首先码一些这一年的流水。 2013年11月,在做了去年的总计《2013》后,去了趟成都,散散心,五天时间匆匆而过,有时间,还是应该导出走走的。

两个程序员的故事

从前,有两家互不知晓的公司,一家叫做“自动会计应用协会”,另外一家叫做“统一计算资本公司”。他们同时决定开发一种提供相同功能的程序。 “自动”雇佣了一位分析程序员,艾伦,来解决这个问题。 而“统一”决定试一下新来的初级程序员查尔斯,看看他是否有真本事。

为什么说2015年将是微服务架构元年?

编者按:微服务架构(MSA)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。

造成IT项目失败的五个原因

1. 技术与商业需求相悖 酷炫前沿技术不一定就是最适合,虽然新技术看上去很美。但是时刻紧记的一点应是如何以最小的代价获取最大的商业收益。因此,要先想明白“为什么”和“是什么”,然后才是“如何做”。 2. 急于求成 在明确项目范围前,人们往往会更倾向于尝试先做。这份自信或许来自过去成功的经验和认为技术能够摆平任何困难。这不但是个代价高昂的举措,而且会影响需求分析和造成80/20问题的出现(当80%的需求满足时,20%“有就更好”的需求往往会成为决定成败与否的关键因素)。

大型网站架构改进历程:存储的瓶颈(五)

摘要:什么是大型网站,从网站的技术角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123网站就是了。 【编者按】本文转自博客园的 夏天的森林,在看这篇之前,大家可以移步看 大型网站架构改进历程:存储的瓶颈(一)、(二)、(三)、(四)。 上文里我遗留了两个问题,一个问题是数据库做了水平拆分以后,如果我们对主键的设计采取一种均匀分布的策略,那么它对于被水平拆分出的表后续的查询操作将有何种影响,第二个问题就是水平拆分的扩容问题。这两个问题在深入下去,本系列就越来越技术化了,可能最终很多朋 […]

大型网站架构改进历程:存储的瓶颈(四)

摘要:什么是大型网站,从网站的技术角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123网站就是了。 【编者按】本文转自博客园的 夏天的森林,在看这篇之前,大家可以移步看 大型网站架构改进历程:存储的瓶颈(一)、(二)、(三)。 如果数据库需要进行水平拆分,这其实是一件很开心的事情,因为它代表公司的业务正在迅猛的增长,对于开发人员而言那就是有不尽的项目可以做,虽然会感觉很忙,但是人过的充实,心里也踏实。

大型网站架构改进历程:存储的瓶颈(三)

摘要:什么是大型网站,从网站的技术角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123网站就是了。 【编者按】本文转自博客园的 夏天的森林,在看这篇之前,大家可以移步看 大型网站架构改进历程:存储的瓶颈(一)、大型网站架构改进历程:存储的瓶颈(二)。 存储的瓶颈写到现在就要进入到深水区了,如果我们所做的网站已经到了做数据库垂直拆分和水平拆分的阶段,那么此时我们所面临的技术难度的挑战也会大大增强。

大型网站架构改进历程:存储的瓶颈(二)

【编者按】本文转自博客园的夏天的森林,在上一篇中,作者介绍了大型网站的定义、存储瓶颈及如何解决读写分离等问题。而本篇着重详解存储瓶颈及解决之道。大家一起来看下。 503错误 在上篇,我讲到某些网站在高并发下会报出503错误,503错误的含义是指网站服务端暂时无法提供服务,503还表达了网站服务端现在有问题,但是以后可能会提供正常的服务,对http协议熟悉的人都知道,5开头的响应码表达了服务端出现了问题,在我们开发测试时候最为常见的是500错误,500代表的含义是服务端程序出现了错误导致网站无法正常提供服务,500通常是服务端异常和错误所致,如果生产系统里发现了500错误,那么只能说明网站存在逻 […]

大型网站架构改进历程:存储的瓶颈(一)

摘要:什么是大型网站,从网站的技术角度考虑这个问题人们很容易犯一个毛病就是认为网站的访问量是衡量的指标,懂点行的人也许会认为是网站在单位时间里的并发量的大小来作为指标,如果按这些标准那么像hao123网站就是了。 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。