關於python使用appium的信息

本文目錄一覽:

基於Appium+WDA+Python搭建IOS自動化測試全紀錄(三):真機demo運行

前期回顧:

基於Appium+WDA+Python搭建IOS自動化測試全紀錄(二):模擬器demo運行

基於Appium+WDA+Python搭建IOS自動化測試全紀錄(一):環境搭建

在模擬器將demo跑通之後,就要在真機上測試啦,模擬器總是要為真機服務的。

在真機上主要是涉及到簽名及證書的問題,一下blog寫的特別好,然而其實我也沒有看懂,RSA演算法神馬的早在密碼學課程上還給老師了。

iOS App 簽名的原理

主要在此簡單記錄一下證書的配置吧。

在xcode中找到build Setting配置部分(之所以把這張圖放出來是因為我最開始找不到這個配置,萌新啥都找不到):

更改一下三個欄位對應的內容:

Code Siging identify 證書裡面對應的開發者

Product Bundle Identify 對應的bundleID

Provisioning Profile 包含了 證書 / Entitlements 等數據,並由蘋果後台私鑰簽名的數據包。

數據包是.mobileprovision文件格式結尾 在終端中輸入如下命令即可看到裡面的信息

改完之後 我們開發的程度就可以裝到真機上啦,這個時候選擇在真機上運行,就可以啦。

測試app裝到真機上之後,還要考慮如何開啟py腳本,在真機上進行測試。

這裡需要注意兩點:

最後找到的地址大概如下:

放到xcode中進行簽名證書配置,注意雖然我們打開的是WebDriverAgent文件夾,但是我們要配置的是WebdDriverAgentRunner 在其Build Settings中進行與證書有關的配置

配置完畢後還需要再WebdDriverAgentRunner中添加一個RoutingHTTPServer.frameork

點擊添加之後-add Other

在如下路徑可以查找到該framework

找的一定是appium文件路徑下的!

上邊關於wda並沒有做過多說明,因為還不怎麼了解 等了解了再補充相關知識

py腳本主要是配置有更改,主體文件請見開頭(二)模擬器demod的blog

在真機上配置更改如下:

然後啟動appium 發現真機上裝上了廁所app 裝上了WebDriverAgentRunner 然後用python運行腳本就ok拉!

以上為從搭建環境-》模擬器跑demo-》真機跑demo的簡單記錄,不涉及到原理方面的講解,如有錯誤之處還請提出。

【之後還有跳一跳的安卓環境搭建

wda的inspector相關環境還沒記錄~】

[Tbc]

個人博客:

進擊的程序茗

python+appium自動化測試-重複執行測試用例

來自APP Android端自動化測試初學者的筆記,寫的不對的地方大家多多指教哦。

在功能測試過程中,經常會遇到一些偶然出現的Bug,需要通過重複執行用例來複現問題,那麼,在自動化測試的過程中,對於一些偶然出現的Bug,也可以針對單個用例,或者針對某個模塊的用例重複執行多次來複現。

重複執行測試用例的方法這邊主要總結了三個:

①重複運行單條或全部測試用例

②測試用例運行失敗後重新運行

③測試用例重複運行直到第一次失敗後停止

要重複執行測試用例,需要先安裝pytest-repeat插件

全局安裝: 即安裝在全局環境中,新創建的工程導入全局環境時會將該包導入,cmd輸入:pip install pytest -repeat,安裝成功後會顯示repeat版本號

局部安裝: 即安裝在當前項目的環境下,新創建的工程不會同步該包,在PyCharm→File→setting,搜索pytest intrepreter,點擊「+」號,如下圖所示:

再搜索pytest-repeat,點擊install package安裝

出現下圖表示安裝成功:

重複執行測試用例的方法有多種,比如:方法一的重複執行單條測試用例;方法二的重複執行每條測試用例;方法三的每條測試用例執行一次,共執行N遍。

在測試用例前添加註解@pytest.mark.repeat(value),value表示重複的次數,來實現單條用例的重複執行。

運行結果為:被裝飾的測試用例test_one會連續執行兩次,再執行test_two,即按照順序,第一個測試用例執行N次,再執行下一個測試用例

在終端傳入-count的方式實現重複執行測試用例

運行結果為:測試用例test_one會連續執行兩次,再執行兩次test_two,即按照執行順序,每一個測試用例都執行N次

注意:-s:表示輸出用例中的調式信息,比如print的列印信息等。

-repeat-scope類似於pytest fixture的scope參數,在終端輸入,-repeat-scope有四個參數:

重運行機制使用到了pytest的插件,插件名稱為:rerunfailures,要使用它,需要先安裝此插件

出現下圖表示安裝成功:

運行結果如下:

注意:

運行結果如下:

將pytest的 -x 選項與pytest-repeat結合使用,可以實現在重複運行測試用例的過程中,測試用例第一次失敗時就停止運行,具體實現方法如下:

運行結果如下:

Appium環境部署(三)——python的下載、安裝與配置

一、下載:根據個人環境和需求選擇對應版本進行下載

1、官網下載

3、網上輸入關鍵字「python」搜索

二、安裝與配置

1、找到下載exe文件,然後雙擊,進行安裝

2、定義好要裝python的目錄後,然後把下方的兩個選項勾選上(方便後期使用python的,不然還得自己去環境變數進行配置)(注意:安裝目錄盡量不要選擇C盤)

3、需要同時安裝兩個python版本,比如python2、python3

(1)2個程序安裝方法一致,雙擊進行安裝,自定義安裝

(2)安裝的文件夾不要在同一個目錄下

(3)重點:在安裝好的目錄下找到「python.exe」這個執行文件,然後進行自定義命名:比如這個目錄下安裝的是2.0,那就修改成「python2.exe」;另一個目錄下安裝的是3.0,那就修改成「python3.0.exe」

(4)然後把這兩個目錄及各自目錄下的Scripts目錄添加到環境變數path下,如 E:python;E:pythonScripts;E:python39;E:python39Scripts

三、檢查環境

1、打開cmd,輸入python,回車,查看返回的版本號

2、如果安裝的時候修改了「python.exe」的名字為「python3.exe」,則在cmd框輸入python3,回車,查看返回的版本號

3、可以編個學習語言的語句輸出試用一下 如 print(“Hello World”) 回車輸出查看結果

python+appium如何設置腳本運行次數

最近在學做安卓自動化測試,分享給大家一個根據設備數啟動相應appium服務的腳本,寫的比較渣,大家多多包涵指導下

設備數據例子:

#coding=utf-8import reimport time,sys,osimport subprocessimport threadingsys.path.append(os.path.abspath(‘..’))from Test_control.App_Mylog import logsfrom Test_control.App_Busi_configdata import machine_dataclass AppiumServer(object):

def __init__(self):

#多個設備信息的list

self.machine_datas = machine_data #從文件讀取出來的多個設備信息list

self.log_path = os.path.abspath(‘../Test_log/appium.log’)

def start_appium(self,ip,port,bp_port,udid,log_path):

‘啟動appium服務’

print(u’devices:{} start appium…’.format(udid))

args1 = ‘netstat -ano|findstr “{}”‘.format(port)

with subprocess.Popen(args1,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) as p1:

p1.wait()

data = p1.stdout.read().decode(‘utf-8’).strip(‘\r\n’)

port_list = re.findall(r”:(\d{4,6}).*\s(\d{1,8})”,data)#搜索埠和PID

if port_list:

#停服務

#排除進程為0的並轉為dict去重

[port_list.remove(i)for i in port_list if i[1]==’0′]

port_pid = dict(port_list)

for k in port_pid.keys():

print(u’port:{0} is used,kill pid:{1}’.format(k,port_pid[k]))

args3 = “taskkill -PID {} -F”.format(port_pid[k])

with subprocess.Popen(args3,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) as p3:

p3.wait()

print(p3.stdout.read().decode(‘gbk’))

print(p3.stderr.read().decode(‘gbk’))

#啟服務

args2 = “start /b appium -a {0} -p {1} -bp {2} -U {3} -g {4} –no-reset”.format(ip,port,bp_port,udid,log_path)

with subprocess.Popen(args2,stdout=open(log_path,’a’),stderr=subprocess.PIPE,shell=True) as p2:

p2.wait()

time.sleep(4)

print(u’devices:{} appium server start completed !’.format(udid))

def multi_startappium(self):

‘批量啟動appium服務’

try:

if self.machine_datas:

for single_machine in self.machine_datas:

self.start_appium(single_machine[‘ip’],single_machine[‘port’],single_machine[‘bp_port’],single_machine[‘udid’],self.log_path)

else:

print(u’no machine info,please check’)

except Exception as e:

logs.exception(e)

raise e

python 怎麼啟動appium

就是沒有,python是實時編譯的代碼,是用python.exe進行解釋執行的,有個程序pythonw.exe是解釋執行窗口程序時通常用的,與python.exe有一點區別。通常將python代碼的文件後綴名改成py或pyw。再執行。 如果你安裝不正確,或有錯誤發生,通常是說明你的環境設置不對,或沒有關聯到py和pyw的文件執行上。

如何通過python文件打開appium

import os

import unittest

from appium import webdriver

from time import sleep

# Returns abs path relative to this file and not cwd

PATH = lambda p: os.path.abspath(

os.path.join(os.path.dirname(__file__), p)

)

class ContactsAndroidTests(unittest.TestCase):

def setUp(self):

desired_caps = {}

desired_caps[‘platformName’] = ‘Android’

desired_caps[‘platformVersion’] = ‘4.4’

desired_caps[‘deviceName’] = ‘192.168.56.111:5555’

desired_caps[‘app’] = PATH(

‘../../../sample-code/apps/ContactManager/ContactManager.apk’

)

desired_caps[‘appPackage’] = ‘com.example.android.contactmanager’

desired_caps[‘appActivity’] = ‘.ContactManager’

self.driver = webdriver.Remote(”, desired_caps)

def tearDown(self):

self.driver.quit()

def test_add_contacts(self):

el = self.driver.find_element_by_name(“Add Contact”)

el.click()

textfields = self.driver.find_elements_by_class_name(“android.widget.EditText”)

textfields[0].send_keys(“Appium User”)

textfields[2].send_keys(“someone@appium.io”)

self.assertEqual(‘Appium User’, textfields[0].text)

self.assertEqual(‘someone@appium.io’, textfields[2].text)

self.driver.find_element_by_name(“Save”).click()

# for some reason “save” breaks things

alert = self.driver.switch_to_alert()

# no way to handle alerts in Android

self.driver.find_element_by_android_uiautomator(‘new UiSelector().clickable(true)’).click()

self.driver.keyevent(3)

if __name__ == ‘__main__’:

suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)

unittest.TextTestRunner(verbosity=2).run(suite)

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244748.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:04
下一篇 2024-12-12 13:04

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論