app實戰運用

影清风發表於2024-11-27

一、開啟模擬器

二、cmd中開啟dos命令

adb connect 127.0.0.1:62001

三、安裝測試包

adb install D:\app\baiduyuedu_3760.apk

E:\dcs\two\app\mojibase.apk

四、開啟appium


@--

五、(定位元素沒有xpath的就刪除原有uiautomatorviewer.bat,替換成新的)

開始定位,定位外掛

@--

@--

六、


@--

七、更換外掛(原有外掛)

(1)更換sdk下tools

路徑:D:\app\adt-bundle-windows-x86_64-20140702\sdk\tools

(2)將jar放在sdk\tools\lib 下

路徑:D:\app\adt-bundle-windows-x86_64-20140702\sdk\tools\lib

(3)將jar放在

案例:sdk\platforms\android-20

路徑:D:\app\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20

然後啟動

@--

=====================================
案例1:

from   appium  import  webdriver
from   time  import  *
cs={
   'platformName':'Android',      #平臺系統:Android or Ios
   'deviceName':'OPPO R17',     #裝置名稱
   'platformVersion':'android-5.1W',    #平臺版本
   'appPackage':'com.moji.mjweather',     #包名
   'appActivity':'com.moji.mjweather.LauncherActivity',   #activity
   'unicodeKeyboard': True, #使用unicode編碼方式傳送字串 }
    'resetKeyboard':True} #是將鍵盤隱藏起來
dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub",cs)
sleep(10)
# dx.find_element_by_id("com.moji.mjweather:id/jc").click() #同意進入
dx.find_element_by_id("com.moji.mjweather:id/azz").send_keys("北京市")

=====================================================================
檢視引數資料:
(1)檢視裝置和版本
'platformName':'Android', #平臺系統:Android or Ios
'deviceName':'SM­G9350', #裝置名稱
'platformVersion':'android­4.4W', #平臺版本

(2)檢視包名和活動路徑名(命令:aapt d badging E:\dcs\two\app\mojibase.apk)

'appPackage':'com.baidu.yuedu', #包名
'appActivity':'com.baidu.yuedu.splash.SplashActivity', #activity 活動路徑名

@--

(3)
dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub")

===================================================================

from appium import webdriver
from time  import sleep
desired_caps={
   'platformName':'Android',      #平臺系統:Android or Ios
   'deviceName':'SM­G9350',     #裝置名稱
   'platformVersion':'android­4.4W',    #平臺版本
   'appPackage':'com.baidu.yuedu',     #包名
   'appActivity':'com.baidu.yuedu.splash.SplashActivity',   #activity
   'unicodeKeyboard': True, #使用unicode編碼方式傳送字串 }
    'resetKeyboard':True} #是將鍵盤隱藏起來

driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
 (一)

  'platformName':'Android',      #平臺系統:Android or Ios
   'deviceName':'SM­G9350',     #裝置名稱
   'platformVersion':'android­4.4W',    #平臺版本

修改手機型別

aapt d badging D:\app\baiduyuedu_3760.apk

包名:

@--

====================================================

結合專案編寫5條自動化用例

案例1
mport  unittest         #匯入unittest 框架,python自帶的框架
from   appium  import  webdriver  #匯入appium模組
from   time  import  *  #匯入時間
from  HTMLTestRunner3_New import HTMLTestRunner
class  appceshi(unittest.TestCase):  #建立一個類,繼承unittest.case的類

    def  setUp(self) -> None:
        cs={
            'platformName':'Android',      #平臺系統:Android or Ios
            'deviceName':'OPPO R17',       #裝置名稱
            'platformVersion':'android-7.1W',    #平臺版本
            'appPackage':'com.baidu.yuedu',      #包名
            'appActivity':'com.baidu.yuedu.splash.SplashActivity',   #活動activity
            'unicodeKeyboard': True, #使用unicode編碼方式傳送字串 }
            'resetKeyboard':True}    #是將鍵盤隱藏起來
        self.dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub",cs)
        sleep(15)

    def tearDown(self) -> None:
        self.dx.quit()

    def  test1_jrts(self):  #進入圖書介面
        self.dx.find_element_by_xpath("//android.widget.TextView[@text='圖書']").click()
        sleep(5)

    def test2_jryh(self):   #進入使用者介面
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        sleep(3)

    def test3_wdsc(self):   #我的收藏介面
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        sleep(3)
        self.dx.find_element_by_id("com.baidu.yuedu:id/account_my_book_fav_title").click()
        sleep(3)

    def test4_wdzdxf(self): #我的自動續費
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        sleep(3)
        self.dx.find_element_by_id("com.baidu.yuedu:id/auto_buy_text").click()
        sleep(3)

    def test5_wdyl(self):    #我的閱歷
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        sleep(3)
        self.dx.find_element_by_id("com.baidu.yuedu:id/text_my_yueli").click()
        sleep(3)

if __name__ == '__main__':
    # unittest.main()   #呼叫所有的用例

    lj=r"D:\pyCharm\zdhcs"     #相對路徑
    d=unittest.TestLoader().discover(start_dir=lj,pattern="appceshi.py")
    bglj=r"D:\pyCharm\zdhcs"   #相對路徑
    new=strftime("%y-%m-%d %H-%M-%S")
    file=lj+"/"+str(new)+"_uizdh.html"
    f=open(file,"bw")
    b=HTMLTestRunner(
        stream=f,description="自動化執行情況",title="ui自動化測試報告",
        tester="dcs"
    )
    b.run(d)
案例2:
import unittest
from   appium  import  webdriver #匯入appium模組
from   time  import  *           #匯入時間

class App_case(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        pass
    @classmethod
    def tearDownClass(cls) -> None:
        pass
    def setUp(self) -> None:
        # 連線引數  cs
        cs = {
            'platformName': 'Android',   # 平臺系統:Android or Ios
            'deviceName': 'OPPO R17',    # 裝置名稱
            'platformVersion': 'android-5.1w',  # 平臺版本
            'appPackage': 'com.baidu.yuedu',    # 包名
            'appActivity': 'com.baidu.yuedu.splash.SplashActivity',  # 活動activity
            'unicodeKeyboard': True,  # 使用unicode編碼方式傳送字串 }
            'resetKeyboard': True}    # 是將鍵盤隱藏起來
        self.dx = webdriver.Remote("http://127.0.0.1:4723/wd/hub", cs)
        sleep(10)
    def tearDown(self) -> None:
        sleep(4)
        self.dx.quit()   #關閉網頁
    def test1_ts(self):  #進入圖書介面
        self.dx.find_element_by_id("com.baidu.yuedu:id/righttitle").click() #點選圖書
        sleep(5)
    def test2_gwc(self):  #進入購物車介面並退出
        self.test1_ts()
        self.dx.find_element_by_id("com.baidu.yuedu:id/ball").click() #點選購物車
        sleep(5)
        self.dx.find_element_by_id("com.baidu.yuedu:id/backbutton").click() #點選退出
        sleep(5)
    def test3_ss(self):  #搜尋圖書內容
        self.dx.find_element_by_id("com.baidu.yuedu:id/search_account").click() #點選搜尋標誌
        sleep(5)
        self.dx.find_element_by_id("com.baidu.yuedu:id/full_text_search_bar_input").send_keys("大哥") #輸入內容
        sleep(5)
        self.dx.find_element_by_id("com.baidu.yuedu:id/sug_item_name").click() #點選作者名稱
        sleep(5)
        self.dx.find_element_by_id("com.baidu.yuedu:id/full_text_search_bar_search").click() #點選搜尋
        sleep(5)
        self.dx.find_element_by_id("com.baidu.yuedu:id/full_text_search_bar_back").click()#點選退出
        sleep(5)

    def test4_sz(self): #進入設定介面
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_account").click()#點選我的按鈕
        sleep(5)
        self.dx.find_element_by_id("com.baidu.yuedu:id/new_my_setting").click()#點選設定
        sleep(5)

    def test5_wifi(self):  #設定wifi
        self.test4_sz()
        self.dx.find_element_by_id("com.baidu.yuedu:id/rl_sync_wifi").click()#點選wifi
        sleep(5)
if __name__ == '__main__':
    unittest.main()
案例3:
from   appium  import  webdriver  #匯入appium模組
from   time  import  *  #匯入時間
#連線引數  cs
cs={
'platformName':'Android',      #平臺系統:Android or Ios
'deviceName':'OPPO R17',       #裝置名稱
'platformVersion':'android-5.1W',     #平臺版本
'appPackage':'com.taobao.taobao',     #包名
'appActivity':'com.taobao.tao.welcome.Welcome',   #活動activity
'unicodeKeyboard': True,  #使用unicode編碼方式傳送字串 }
'resetKeyboard':True}     #將鍵盤隱藏起來
dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub",cs)
sleep(3)
dx.find_element_by_id("com.taobao.taobao:id/uik_mdButtonDefaultPositive").click() #點選同意
sleep(4)

#充話費
dx.find_element_by_xpath("//android.widget.FrameLayout[@content-desc='充值']").click() #充值中心
sleep(3)
dx.find_element_by_xpath("//android.view.View[@text='話費流量']").click()
sleep(3)
dx.find_element_by_class_name("android.widget.EditText").send_keys("12345678901")
sleep(3)

#跳轉登入
# dx.find_element_by_xpath("//android.widget.FrameLayout[@content-desc='購物車']").click()
# sleep(3) #購物車
# dx.find_element_by_id("com.taobao.taobao:id/aliuser_login_account_et").send_keys("admin") #賬號
# sleep(4)
# dx.find_element_by_id("com.taobao.taobao:id/aliuser_login_password_et").send_keys("12345") #密碼
# sleep(3)
# dx.find_element_by_id("com.taobao.taobao:id/aliuser_login_login_btn").click() #登入
# sleep(3)
案例4:
from   appium  import  webdriver #匯入appium模組
from   time  import  *           #匯入時間
from unittestreport import  TestRunner
import unittest
#連線引數  cs
class   Abcd(unittest.TestCase):
    def setUp(self) -> None:
        cs={
        'platformName':'Android',      #平臺系統:Android or Ios
         'deviceName':'OPPO R17',      #裝置名稱
        'platformVersion':'android-5.1W',    #平臺版本
        'appPackage':'com.baidu.yuedu',      #包名
        'appActivity':'com.baidu.yuedu.splash.SplashActivity',   #活動activity
        'unicodeKeyboard': True, #使用unicode編碼方式傳送字串 }
         'resetKeyboard':True}   #是將鍵盤隱藏起來
        self.dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub",cs)
        sleep(12)
    def tearDown(self) -> None:
            sleep(4)
            self.dx.quit()
    def test1_tl(self): #進入書架
        self.dx.find_element_by_xpath("//android.widget.TextView[@text='小說']").click()
    def test2_ss(self): #搜尋狼圖騰書本
        self.dx.find_element_by_id("com.baidu.yuedu:id/search_account").click()
        sleep(3)
        self.dx.find_element_by_id("com.baidu.yuedu:id/full_text_search_bar_input").send_keys("狼圖騰")
    def test3_qlhc(self):  #清理快取
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        self.dx.find_element_by_id("com.baidu.yuedu:id/new_my_setting").click()
        self.dx.find_element_by_id("com.baidu.yuedu:id/new_my_clean_cache").click()
    def test4_djqd(self):  #點選簽到
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        self.dx.find_element_by_xpath("//android.widget.TextView[@text='簽到']").click()
    def test5_wdgm(self):  #我的購買
        self.dx.find_element_by_id("com.baidu.yuedu:id/title_left_account").click()
        self.dx.find_element_by_xpath("//android.widget.TextView[@text='我的購買']").click()
        sleep(2)
        self.dx.find_element_by_id("com.baidu.yuedu:id/positive").click()
if __name__ == '__main__':
     unittest.main()

相關文章