最近在研究安卓APP的自動化測試。首先遇到的問題是,當一個session建立的時候,最先進入的是歡迎頁和引導頁,引導頁有三張,最后一張上顯示“enter”按鈕,點擊才能進入主界面。
歡迎頁加引導頁,這兩個頁面是每次進入APP都無法避免的,如何通過代碼執行跳過它們進入主界面的操作呢?
1、建立session
def test_enterApp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.4'
desired_caps['app'] = '/Users/a140/Downloads/app.apk'
desired_caps['deviceName'] = '03083025d0250909'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
self.driver.implicitly_wait(5)
2、運用代碼模擬手指從右向左滑動的操作
#獲取屏幕寬度和高度
def getSize(self):
x = self.driver.get_window_size()['width']
y = self.driver.get_window_size()['height']
return (x, y)
#向左滑動
def swipeLeft(self):
l = self.getSize()
x1 = int(l[0] * 0.9)
y1 = int(l[1] * 0.5)
x2 = int(l[0] * 0.1)
self.driver.swipe(x1, y1, x2, y1)
因為手機屏幕的尺寸多樣,所以這里不設置固定的寬度和高度的值,而是封裝了一個獲取屏幕寬高度的方法,通過它計算屏幕滑動的坐標和距離。
3、調用swipeLeft()方法向左滑動,最后通過find_element_by_id()找到“enter”按鈕,然后點擊進入主界面
#向左滑動跳過引導頁
x = 0
while x < 3:
self.swipeLeft()
x += 1
enterApp = self.driver.find_element_by_id("com.app.night:id/enter")
enterApp.click()
完整的代碼如下所示:
import unittest
from appium import webdriver
class HelloWorld(unittest.TestCase):
def test_enterFilter(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.4'
desired_caps['app'] = '/Users/a140/Downloads/app.apk'
desired_caps['deviceName'] = '03083025d0250909'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
self.driver.implicitly_wait(5)
#向左滑動跳過引導頁
x = 0
while x < 3:
self.swipeLeft()
x += 1
enterApp = self.driver.find_element_by_id("com.app.night:id/enter")
enterApp.click()
#獲取屏幕寬度和高度
def getSize(self):
x = self.driver.get_window_size()['width']
y = self.driver.get_window_size()['height']
return (x, y)
#向左滑動
def swipeLeft(self):
l = self.getSize()
x1 = int(l[0] * 0.9)
y1 = int(l[1] * 0.5)
x2 = int(l[0] * 0.1)
self.driver.swipe(x1, y1, x2, y1)
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(HelloWorld)
unittest.TextTestRunner(verbosity=2).run(suite)