小白学Appium:怎么定位页面元素?

小白在学习实践Appium对APP进行自动化测试中遇到各种各样的问题。在上一小白使用Appium做自动化测试系列文《小白学Appium:怎么搭建robotframework做测试?》中,小白在老鸟的协助下搭建好了Appium+Robotframework+RIDE的APP自动化环境,并学会了基本的使用。现在小白又遇到了问题,怎么定位页面元素呢?

在今天,小白和老鸟又开始一场问答来说明怎么定位元素:

小白:在开发中使用的控件查找方法find_element_by_class_name,如果用这个需要在robotframework中怎么写?

老鸟:自己先查下AppiumLibrary的关键字使用说明,再来决定你需要使用哪个关键字。

小白:MD,他的按钮是上面的"登陆"和下面+图片组成的,我都不知道他的事件是写在字上面还是下面的图上面?

老鸟:这种情况一般是linkbuton做了一层包装。

小白:他的name是哪个?登录吗?

app元素列表

老鸟:不是,这里用id进行定位撒。你们打算后面按什么来定位元素(id,name或是其它),要给你们的开发提规范,告知你的leader,如果要做好自动化,需要如此。如果实在不行,那没法,做起来就确实困难。

小白:点击进入这个参数是啥?

Contains 

老鸟:在10秒内,看页面是否包含文字内容”点击进入”,如果有,则pass,没有就超时报错。因为有时页面加载时很慢的,可能要3、4秒才能加载出来,而点击进入时该页面中的文字。如果你没加载出来,就去对控件进行操作,就会出现id找不到等情况。

小白:这是怎么回事?

找不到控件

是不是这样的吧?

示例 

老鸟:用click element看看?

小白:我日哦,那click button用来干嘛的?

老鸟:说明这不是一个纯种button控件呗。

小白:可以了,用click element就对了。MD管他是不是纯种的,click button 搞毛啊?!

老鸟:AppiumLibrary,它是从Selenium库演进而来的,如果你觉得不好用,完全可以去库里面修改对应的方法。(希望再次勾起小白的求知欲)



留言