中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

如何給網(wǎng)站做宣傳網(wǎng)站注冊(cè)信息查詢(xún)

如何給網(wǎng)站做宣傳,網(wǎng)站注冊(cè)信息查詢(xún),漳州微網(wǎng)站建設(shè)公司推薦,福田蒙派克7座商務(wù)車(chē)報(bào)價(jià)由于公司的產(chǎn)品坐落于不同的平臺(tái),如ios、mac、Android、windows、web。因此每次有新需求的時(shí)候,開(kāi)發(fā)結(jié)束后,留給測(cè)試的時(shí)間也不多。此外,一些新的功能實(shí)現(xiàn),偶爾會(huì)影響其他的模塊功能正常的使用。 網(wǎng)上的ios自動(dòng)化方面的…

由于公司的產(chǎn)品坐落于不同的平臺(tái),如ios、mac、Android、windows、web。因此每次有新需求的時(shí)候,開(kāi)發(fā)結(jié)束后,留給測(cè)試的時(shí)間也不多。此外,一些新的功能實(shí)現(xiàn),偶爾會(huì)影響其他的模塊功能正常的使用。
網(wǎng)上的ios自動(dòng)化方面的內(nèi)容也是少之又少。由于本人對(duì)ios自動(dòng)化初次接觸,花了兩天的時(shí)間到處找文章,才逐漸入了門(mén)。本文也是站在小白的角度,從0到1搭建ios自動(dòng)化測(cè)試環(huán)境。

框架選型

查了很多資料,關(guān)于iOS自動(dòng)化的框架有很多。但是支持Python的沒(méi)有幾個(gè)。

如:

UIAutomation 是蘋(píng)果提供的 UI 自動(dòng)化測(cè)試框架,使用 JavaScript 編寫(xiě)。
XCTest 是一個(gè)可以提供各個(gè)層次的測(cè)試的框架,比如單元測(cè)試,自動(dòng)化測(cè)試,性能測(cè)試等。
KIF 使用未公開(kāi)的 Apple API(私有 API),這對(duì)于測(cè)試目的而言是安全的,基于第三方 iOS UI 的單元測(cè)試框架,所以可以做項(xiàng)目的單元測(cè)試,也可以做 UI 集成測(cè)試。但缺點(diǎn)是運(yùn)行較慢。且需要掌握Objective-C 語(yǔ)言。
Frank 是IOS 開(kāi)發(fā)環(huán)境下一款實(shí)現(xiàn)自動(dòng)測(cè)試的工具,Xcode 環(huán)境下開(kāi)發(fā)完成后,通過(guò) Frank 實(shí)現(xiàn)結(jié)構(gòu)化的測(cè)試用例,其底層語(yǔ)言為 Ruby,作為一款開(kāi)源的 iOS 測(cè)試工具,在國(guó)外已經(jīng)有廣泛的應(yīng)用。但是國(guó)內(nèi)相關(guān)資料卻比較少。其最大的優(yōu)點(diǎn)是允許我們用熟悉的自然語(yǔ)言實(shí)現(xiàn)實(shí)際的操作邏輯。

還有一些云測(cè)試平臺(tái),因?yàn)槎际鞘召M(fèi)的,這里也就不說(shuō)了。
綜上所述,appium框架支持多種語(yǔ)言編寫(xiě)自動(dòng)化測(cè)試用例,且我之前使用過(guò)。因此我選擇了它。

appium驅(qū)動(dòng)iOS測(cè)試原理

XCUITest是蘋(píng)果開(kāi)發(fā)的一個(gè)做IOS自動(dòng)化測(cè)試的框架,需要了解些Swift等iOS編程知識(shí);WebDriverAgent是Facebook開(kāi)發(fā)的一個(gè)iOS自動(dòng)化測(cè)試工具,先來(lái)看下面的這張?jiān)韴D:

WDA在Client創(chuàng)建了一個(gè)Server,在手機(jī)端安裝了一個(gè)叫作WebDriverAgentRunner 的一個(gè)應(yīng)用;這個(gè)應(yīng)用會(huì)接收來(lái)自 Server 的指令,并連接底層的XCTest.framwork,讓 XCTest.framwork 調(diào)用蘋(píng)果API來(lái)操作手機(jī)進(jìn)行自動(dòng)化

而appium是把WebDriverAgentRunner 給集成進(jìn)去了,因此實(shí)現(xiàn)了appium的跨平臺(tái)能力
通過(guò)上圖我們了解到 Appium 很粗暴的把整個(gè) WebDriverAgent 直接集成到自己的項(xiàng)目里,然后通信機(jī)制就走 WebDriverAgent,Appium 其實(shí)就提供了一個(gè) Client 端的作用。所以 iOS 9.3 系統(tǒng)之后自動(dòng)化測(cè)試核心是 WebDriverAgent,Appium 就提供了一個(gè) Client 端來(lái)寫(xiě)腳本和發(fā)送指令。

Appium 自動(dòng)化架構(gòu)模式可以用一個(gè)抽象的架構(gòu)表示,就是下面這樣的:

從圖中可以看出:

Client 端是 Appium 之前本身提供的;
Server 端是:WebDriverAgent 和 Instruments;( Appium 直接把 WebDriverAgent 整個(gè)集成進(jìn)來(lái),Instruments 是為了支持 iOS 9.3 之前的系統(tǒng))
最右邊是一個(gè)手機(jī)
之前 Server 是和 bootstrap.jar 通信,這里 WebDriverAgent 提供了 WebDriverAgentRunner (類(lèi)似 bootstrap.jar 的功能),WebDriverAgent與之通信;
WebDriverAgentRunner 是一個(gè)應(yīng)用,Client 和 server 運(yùn)行了之后,WebDriverAgentRunner 會(huì)被裝到手機(jī)上,這個(gè)應(yīng)用會(huì)接收來(lái)自 Server 的指令,并連接底層的 XCTest.framwork,并告訴 XCTest.framwork 操作手機(jī)進(jìn)行自動(dòng)化。

關(guān)于 WebDriverAgent

實(shí)現(xiàn)了一個(gè) server,通過(guò) server 可以遠(yuǎn)程控制 iOS 設(shè)備:啟動(dòng)應(yīng)用、關(guān)閉應(yīng)用、點(diǎn)擊、滾動(dòng)等操作;
通過(guò)連接 XCTest.framework 調(diào)用蘋(píng)果的 API 執(zhí)行動(dòng)作;
支持多個(gè)設(shè)備同時(shí)進(jìn)行自動(dòng)化;
Appium、Macaca 已經(jīng)集成。
但是 WebDriverAgent 僅僅只提供了一個(gè) server(和 inspect 進(jìn)行元素定位),并沒(méi)有像 Appium 一樣提供 java 或 python 的 Client 端去寫(xiě)腳本,腳本執(zhí)行的時(shí)候發(fā)送指令給 server,然后去運(yùn)行。WebDriverAgent 要求你自己去實(shí)現(xiàn) Client 端,即拿 Java/ Python 的 WebDriver 庫(kù)進(jìn)行封裝,然后發(fā)送指令。所以 WebDriverAgent 其實(shí)就類(lèi)似于 Appium server,就只是一個(gè) server。

環(huán)境搭建

硬件環(huán)境

一臺(tái)Mac、一部iphone(真機(jī)或虛擬機(jī))、一條數(shù)據(jù)線

實(shí)際測(cè)試都是在真機(jī)上完成的,所以整篇文章都以真機(jī)為準(zhǔn)。

自動(dòng)化開(kāi)發(fā)環(huán)境

開(kāi)發(fā)環(huán)境:xcode, Command Line Tools, ,Pycharm, Python3, pip, setuptools

其他環(huán)境:homebrew, node, npm, carthage, appium, python-client, appium-doctor,

xcode,

電腦打開(kāi)App Store搜索即可下載安裝,

Command Line Tools

為了配置appium環(huán)境,我們需要安裝Xcode Command Line Tools。


下載完成后,雙擊已下載的 .dmg 進(jìn)行安裝,檢驗(yàn) Command Line Tools 是否安裝成功。

xcode-select --install # 查看是否安裝
xcode-select: error: command line tools are already installed, use "Software Update" to install updates(錯(cuò)誤:命令行工具已經(jīng)安裝,請(qǐng)使用“軟件更新”安裝更新)

Python,

官網(wǎng)下載一步下一步安裝即可,

pip & setuptools,

下載setuptools
https://pypi.python.org/pypi/setuptools
https://pypi.python.org/pypi/pip
打開(kāi)cmd 進(jìn)入setuptools解壓目錄,輸入:python setup.py install
進(jìn)入pip解壓目錄,輸入:python setup.py install
安裝好后,打開(kāi)終端,輸入pip,如提示不是內(nèi)部命令,則將python安裝目錄下Scripts目錄添加到環(huán)境變量Path中。

Homebrew,

Homebrew是一個(gè)包管理軟件,它可以使我們更容易地安裝其他一些軟件終端輸入安裝:
/usr/bin/ruby -e "$(curl –fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
檢查homebrew是否安裝
brew -v //檢查homebrew是否安裝
brew list //查看已安裝列表
brew update //更新Homebrew

Node & NPM,

安裝
brew install node@14
查看node版本
node -v
配置國(guó)內(nèi)源
npm config set registry https://registry.npm.taobao.org/

Carthage,

Carthage項(xiàng)目依賴(lài)管理, 類(lèi)似于 java 的 maven; 主要是 WebDriverAgent 使用,WebDriverAgent 是用它做項(xiàng)目依賴(lài)的
終端輸入:
brew install carthage
更新carthage : brew upgrade carthage
重新安裝 : brew reinstall carthage
安裝完成后檢查一下是否安裝成功
carthage version

Appium,

安裝appium-server
https://github.com/appium/appium-desktop

Appium-Doctor,

檢查appium安裝是否成功的工具集指令
安裝 appium-doctor
npm install appium-doctor -g
檢查 iOS環(huán)境是否安裝成功
appium-doctor --ios

iOS 真機(jī)調(diào)試環(huán)境配置

webdriverAgent,

在github上下載最新webdriverAgent代碼
https://github.com/appium/WebDriverAgent
下載依賴(lài)(暫時(shí)可跳過(guò),下面操作沒(méi)報(bào)錯(cuò),可忽略)
cd WebDriverAgent
mkdir -p Resources/WebDriverAgent.bundle
sh ./Scripts/build.sh

執(zhí)行完成后,打開(kāi)WebDriverAgent.xcodeproj文件。

配置開(kāi)發(fā)者賬號(hào),所有target建議都配置一遍。


連接并選擇自己的ios設(shè)備
窗口欄-Product-Destination-Device

選擇WebDriverAgentRunner,
窗口欄-Product-Test


如果有這個(gè)報(bào)錯(cuò),前往手機(jī)設(shè)置-通用-描述文件與設(shè)置管理,授信一下APP就OK了。


然后再次運(yùn)行Test,就可以在Xcode控制臺(tái)看到下面的輸出信息:


瀏覽器打開(kāi),訪問(wèn)上面的地址+/status,網(wǎng)頁(yè)返回以下內(nèi)容,說(shuō)明OK了。


有些iphone手機(jī)通過(guò)手機(jī)的IP和端口號(hào)還不能訪問(wèn),此時(shí)需要將手機(jī)的端口轉(zhuǎn)發(fā)到mac上,終端運(yùn)行以下命令

iproxy 8100 8100
將手機(jī)的8100端口,映射到電腦的8100端口上。這樣我們就能通過(guò)訪問(wèn)電腦的8100端口來(lái)訪問(wèn)到手機(jī)了。

網(wǎng)上查到說(shuō)“為了持續(xù)集成”,使用如下方法,在代碼中啟動(dòng)wda,不需要在xcode啟動(dòng)。

desiredCapabilities.setCapability("useNewWDA", true);
這種方法,我暫時(shí)沒(méi)有試過(guò),特此記錄,有空再試。

appium-desktop (server)
打開(kāi)下載的appium desktop

點(diǎn)擊 start server


因?yàn)樾掳姹镜?inspector 和 appium-desktop 分離了,我們需要去github下載inspector。
下載地址

安裝后,打開(kāi)。在 Desired Capabilities 中輸入相關(guān)的參數(shù)后點(diǎn)擊Start Session


{
? "platformName": "ios",
? "appium:deviceName": "我的iPhone",
? "appium:platformVersion": "15.7.1",
? "appium:bundleId": "com.safety.authon",
? "appium:udid": "0a1386121527af8447cb5ac06de1d35cec8ea798"
}
以上信息,可通過(guò)xcode-菜單欄-Window-Devices and Simulator,獲取。

運(yùn)行成功后,會(huì)彈出一個(gè)控制界面,在該界面中可以看到手機(jī)運(yùn)行程序的布局元素。


自動(dòng)化用例編寫(xiě)


打開(kāi)pycharm,新建一個(gè)項(xiàng)目。

安裝依賴(lài),

pip install selenium
pip install Appium-Python-Client

編寫(xiě)自動(dòng)化測(cè)試用例代碼,

#! /usr/bin/env pyhton
# -*- coding:utf-8 -*-
# author:jeff.xie
# datetime:2023/11/22 16:23
# software:PyCharm# iphone app 啟動(dòng)成功實(shí)戰(zhàn)測(cè)試用例from appium import webdriver
from time import sleepfrom appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.common.by import Bydriver = webdriver.Remote(command_executor = 'http://127.0.0.1:4723/wd/hub',
desired_capabilities = {
"platformName": "ios",
"appium:deviceName": "iPhone Jeff",
"appium:platformVersion": "16.5.1",
"appium:bundleId": "welab.bank.mobile.stage",
"appium:udid": "00008030-000A09C81A43802E"
})
sleep(10)ele = driver.find_element(AppiumBy.IOS_PREDICATE,"name == '用戶名稱(chēng)'")
ele.send_keys("qatest101")
driver.find_element(By.ID,"")
sleep(2)# 參考 External Libraries.site-packages.appium.webdriver.common.appiumby
class AppiumBy(By):IOS_PREDICATE = '-ios predicate string'IOS_UIAUTOMATION = '-ios uiautomation'IOS_CLASS_CHAIN = '-ios class chain'ANDROID_UIAUTOMATOR = '-android uiautomator'ANDROID_VIEWTAG = '-android viewtag'ANDROID_DATA_MATCHER = '-android datamatcher'ANDROID_VIEW_MATCHER = '-android viewmatcher'# DeprecatedWINDOWS_UI_AUTOMATION = '-windows uiautomation'ACCESSIBILITY_ID = 'accessibility id'IMAGE = '-image'CUSTOM = '-custom'#參考seleniumclass By:"""Set of supported locator strategies."""ID = "id"XPATH = "xpath"LINK_TEXT = "link text"PARTIAL_LINK_TEXT = "partial link text"NAME = "name"TAG_NAME = "tag name"CLASS_NAME = "class name"CSS_SELECTOR = "css selector"

import unittest
import os
from appium import webdriver
from time ?import sleep


class ?appiumSimpleTezt (unittest.TestCase):

?? ?def ?setUp(self):
?? ??? ?app_path = '/Users/jx/appiumSimpleDemo/build/Release-iphoneos/appiumSimpleDemo.app'
?? ??? ?app = os.path.abspath(app_path)

?? ??? ?self.driver = webdriver.Remote(
?? ??? ??? ?command_executor = 'http://127.0.0.1:4723/wd/hub',
?? ??? ??? ?desired_capabilities = {
? "platformName": "ios",
? "appium:deviceName": "我的iPhone",
? "appium:platformVersion": "15.7.1",
? "appium:bundleId": "com.safety.authon",
? "appium:udid": "0a1386121527af8447cb5ac06de1d35cec8ea798"
}

?? ?def test_push_view(self):
?? ??? ?next_view_button = self.driver.find_element_by_accessibility_id("entry next view")
?? ??? ?next_view_button.click()

?? ??? ?sleep(2)

?? ??? ?back_view_button = self.driver.find_element_by_accessibility_id("Back")
?? ??? ?back_view_button.click()

?? ?def tearDown(self):
?? ??? ?sleep(1)
?? ??? ?# self.driver.quit()

if __name__ == '__main__':
?? ?suite = unittest.TestLoader().loadTestsFromTestCase(appiumSimpleTezt)
?? ?unittest.TextTestRunner(verbosity=2).run(suite)

以上就是ios自動(dòng)化環(huán)境的過(guò)程,記錄下來(lái)。也方便自己回頭來(lái)看,也方便新人學(xué)習(xí)少走彎路。

以上內(nèi)容參考了如下網(wǎng)站:
https://github.com/zhshijie/appiumSimpleDemo
http://appium.io/docs/en/about-appium/getting-started/
https://www.cnblogs.com/crstyl/p/14690895.html
https://github.com/appium/WebDriverAgent
?

http://www.risenshineclean.com/news/10765.html

相關(guān)文章:

  • 外包公司做網(wǎng)站多少seo網(wǎng)絡(luò)推廣技術(shù)員招聘
  • 網(wǎng)站扁平化布局seo快速排名網(wǎng)站優(yōu)化
  • 做旅游網(wǎng)站需要引進(jìn)哪些技術(shù)人才搜索引擎優(yōu)化是什么工作
  • 50m專(zhuān)線做視頻網(wǎng)站無(wú)錫網(wǎng)絡(luò)公司
  • 電子商務(wù)網(wǎng)站開(kāi)發(fā)軟件在線看seo網(wǎng)站
  • WordPress評(píng)級(jí)評(píng)分主題如何做網(wǎng)站seo
  • 手機(jī)怎么做網(wǎng)站免費(fèi)的最佳磁力吧ciliba搜索引擎
  • 499可以做網(wǎng)站百度廣告推廣平臺(tái)
  • 記錄網(wǎng)站 自己做自助建站的優(yōu)勢(shì)
  • 怎么做網(wǎng)站界面設(shè)計(jì)百度愛(ài)企查電話人工服務(wù)總部
  • 網(wǎng)站建設(shè)個(gè)人網(wǎng)上銀行seo先上排名后收費(fèi)
  • 電子商務(wù)網(wǎng)站建設(shè)的展望參考網(wǎng)是合法網(wǎng)站嗎?
  • 鄭州網(wǎng)站建設(shè)漢獅網(wǎng)絡(luò)營(yíng)銷(xiāo)方式
  • 手把手教做網(wǎng)站能打開(kāi)各種網(wǎng)站的瀏覽器
  • python 開(kāi)發(fā)手機(jī)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作軟件下載
  • wordpress jpg https貴州網(wǎng)站seo
  • 用織夢(mèng)做網(wǎng)站能練技術(shù)嗎seo排名優(yōu)化課程
  • 設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站新站seo外包
  • 網(wǎng)站顏色搭配哪里有免費(fèi)的網(wǎng)站推廣軟件
  • 長(zhǎng)春做高端網(wǎng)站公司網(wǎng)頁(yè)百度
  • 百度推廣做網(wǎng)站百度快照不更新怎么辦
  • 愛(ài)網(wǎng)站網(wǎng)站查詢(xún)汽車(chē)營(yíng)銷(xiāo)策劃方案ppt
  • 網(wǎng)站建設(shè) 站內(nèi)搜索網(wǎng)頁(yè)設(shè)計(jì)模板圖片
  • 手機(jī)端網(wǎng)站開(kāi)發(fā)各地疫情最新消息
  • 什么網(wǎng)站專(zhuān)門(mén)做自由行的游戲推廣員怎么做
  • 怎么查詢(xún)網(wǎng)站是否被收錄百度網(wǎng)址大全設(shè)為主頁(yè)
  • 江蘇省徐州市建設(shè)銀行網(wǎng)站a站
  • iis發(fā)布網(wǎng)站慢常州seo排名收費(fèi)
  • 深圳建網(wǎng)站的專(zhuān)業(yè)公司百度廣告投放平臺(tái)
  • 網(wǎng)絡(luò)傳奇重慶seo什么意思