继续完善脚本:
运行自动登录脚本发现会弹出权限弹框,因此需要添加一个点击动作
通过xpath定位到该元素:
self.driver.find_element_by_xpath("//android.widget.Button[contains(@text,'允许')]")
为了避免可能有些机型不会弹框,这里写一个try来做点击事件
try: #自动点击app授权弹框 button = self.driver.find_element_by_xpath("//android.widget.Button[contains(@text,'允许')]") button.click() except: print("自动点击应用app授权出错!")
完成登录动作后,需要验证是否登录成功,用unittest的断言assert进行验证
这里可以通过捕捉登录后的title进行验证,代码如下:
title = self.driver.find_element_by_id("com.happy.food:id/title").text self.assertIn(title,"开心粮票")
一个简单的自动化脚本基本完成,下面是完整的代码:
from appium import webdriver from time import sleep import adbbase import unittest class happyfoodTest(unittest.TestCase): #自动化框架,继承unittest.TestCase """Test com.happy.food""" def setUp(self): #准备测试环境,每个用例前执行 desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['paltformVersion'] = adbbase.platformVersion() desired_caps['deviceName'] = adbbase.platformName() desired_caps['appPackage'] = adbbase.appPackage() desired_caps['appActivity'] = adbbase.appActivity() self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) sleep(5) def test_login(self): #用例,以test开头;登录测试 """Test login""" self.driver.find_element_by_id("phoneNumber").send_keys("13410066133") self.driver.find_element_by_id("passWord").send_keys("1234567a") self.driver.back() self.driver.find_element_by_id("login").click() sleep(1) try: #自动点击app授权弹框 button = self.driver.find_element_by_xpath("//android.widget.Button[contains(@text,'允许')]") button.click() except: print("自动点击应用app授权出错!") sleep(1) title = self.driver.find_element_by_id("com.happy.food:id/title").text self.assertIn(title,"开心粮票") def tearDown(self): #清理环境,用例执行完后执行 self.driver.quit() if __name__ == '__main__': unittest.main()