学到了这篇,我们开始来写一个自动化测试脚本,重点在测试,也就是说断言。这前面我们只不过是把点击和输入转换成自动化的方式,这篇开始,我们需要加入断言,这样才能算一个完整的自动化测试脚本。
1. 脚本内容如下
- import os
- import time
- from appium import webdriver
- apk_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) # 获取当前项目的根路径
- desired_caps ={ 'platformName': 'Android',
- 'platformVersion': '6.0.1',
- 'deviceName': 'KIW-AL10',
- 'noReset': True,
- 'appPackage': 'com.baidu.searchbox',
- 'appActivity': 'com.baidu.searchbox.SplashActivity',
- 'unicodeKeyboard': True,
- 'resetKeyboard': True
- }
- driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
- time.sleep(3) #app启动后等待3秒,方便元素加载完成
- # 根据元素xpath来定位
- # 点击“输入框”
- driver.find_element_by_id("com.baidu.searchbox:id/baidu_searchbox").click()
- # 输入字段
- searchInputBox = driver.find_element_by_id('com.baidu.searchbox:id/SearchTextInput')
- searchInputBox.send_keys("Appium")
- driver.press_keycode(66) # 点击屏幕键盘的搜索键
- time.sleep(1)
- #断言:由于手机百度搜索列表页,每个结果都不可以进行元素定位,所以无法通过搜索命中高亮显示来断言。
- #这里采用搜索输入框显示的文字是我们输入的字段来简单断言一下
- searchEditBoxText = driver.find_element_by_id('com.baidu.searchbox:id/SearchTextInput')
- if(searchEditBoxText.text == 'Appium'):
- print("Test pass.")
- else:
- print("Test Failed!!")
在driver.press_keycode(66), 这个表示搜狗输入法键盘上的“搜索按钮”,这个可能输入法不同造成这个地方可能不是66,这里需要注意。由于手机百度,在搜索结果列表,不支持对搜索结果项进行元素定位,所以无法正常默认手工测试的断言,这里只好简单断言下,输入的“Appium”会不会在搜索框内显示。由于这个问题,下篇文章,我可能要换一个app来演示测试。
如果你想测试失败,你可以写成
- <span style="font-family:'Microsoft YaHei';font-size:18px;">searchEditBoxText.text == 'Appium123'</span>