Appium Driver的封装
from appium import webdriver
from appium.webdriver.webdriver import WebDriver
class AndroidClient(object):
driver:WebDriver
@classmethod
def install_app(cls) -> WebDriver:
caps = {}
caps["platformName"] = "android"
caps["deviceName"] = "hogwarts"
caps["appPackage"] = "com.xueqiu.android"
caps["appActivity"] = ".view.WelcomeActivityAlias"
caps["autoGrantPermissions"] = "true"
cls.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
cls.driver.implicitly_wait(10)
return cls.driver
@classmethod
def restart_app(cls) -> WebDriver:
caps = {}
caps["platformName"] = "android"
caps["deviceName"] = "hogwarts"
caps["appPackage"] = "com.xueqiu.android"
caps["appActivity"] = ".view.WelcomeActivityAlias"
caps['noReset']=True
caps['chromedriverExecutableDir']="/Users/seveniruby/projects/chromedriver/2.20"
cls.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
cls.driver.implicitly_wait(10)
return cls.driver
Page的封装
第一个page
from appium import webdriver
from appium.webdriver.webdriver import WebDriver
from page_object.driver.AndroidClient import AndroidClient
from page_object.page.SelectedPage import SelectedPage
class MainPage(object):
def __init__(self):
AndroidClient.restart_app()
def gotoSelected(self):
AndroidClient.driver.implicitly_wait(100)
AndroidClient.driver.find_element_by_xpath("//*[@text='自选']")
AndroidClient.driver.find_element_by_xpath("//*[@text='自选']").click()
return SelectedPage()
第二个page
from page_object.driver.AndroidClient import AndroidClient
class SelectedPage(object):
def addDefault(self):
return self
def getPriceByName(self, name) -> float:
price=AndroidClient.driver\
.find_element_by_xpath("//*[contains(@resource-id, 'stockName') and @text='"+name+"']"+
"/../../..//*[contains(@resource-id, 'currentPrice')]").text
return float(price)
测试case
import pytest
from page_object.page.MainPage import MainPage
class TestSelected(object):
def test_price(self):
main=MainPage()
assert main.gotoSelected().getPriceByName("科大讯飞")==29.58