国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

網(wǎng)站開發(fā)多少錢電子商務(wù)網(wǎng)站設(shè)計方案

網(wǎng)站開發(fā)多少錢,電子商務(wù)網(wǎng)站設(shè)計方案,軟件開發(fā)專業(yè)的大學(xué),手機網(wǎng)站頁面大小由于公司的產(chǎn)品坐落于不同的平臺,如ios、mac、Android、windows、web。因此每次有新需求的時候,開發(fā)結(jié)束后,留給測試的時間也不多。此外,一些新的功能實現(xiàn),偶爾會影響其他的模塊功能正常的使用。 網(wǎng)上的ios自動化方面的…

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

框架選型

查了很多資料,關(guān)于iOS自動化的框架有很多。但是支持Python的沒有幾個。

如:

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

還有一些云測試平臺,因為都是收費的,這里也就不說了。
綜上所述,appium框架支持多種語言編寫自動化測試用例,且我之前使用過。因此我選擇了它。

appium驅(qū)動iOS測試原理

XCUITest是蘋果開發(fā)的一個做IOS自動化測試的框架,需要了解些Swift等iOS編程知識;WebDriverAgent是Facebook開發(fā)的一個iOS自動化測試工具,先來看下面的這張原理圖:

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

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

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

從圖中可以看出:

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

關(guān)于 WebDriverAgent

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

環(huán)境搭建

硬件環(huán)境

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

實際測試都是在真機上完成的,所以整篇文章都以真機為準。

自動化開發(fā)環(huán)境

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

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

xcode,

電腦打開App Store搜索即可下載安裝,

Command Line Tools

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


下載完成后,雙擊已下載的 .dmg 進行安裝,檢驗 Command Line Tools 是否安裝成功。

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

Python,

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

pip & setuptools,

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

Homebrew,

Homebrew是一個包管理軟件,它可以使我們更容易地安裝其他一些軟件終端輸入安裝:
/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
配置國內(nèi)源
npm config set registry https://registry.npm.taobao.org/

Carthage,

Carthage項目依賴管理, 類似于 java 的 maven; 主要是 WebDriverAgent 使用,WebDriverAgent 是用它做項目依賴的
終端輸入:
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 真機調(diào)試環(huán)境配置

webdriverAgent,

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

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

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


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

選擇WebDriverAgentRunner,
窗口欄-Product-Test


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


然后再次運行Test,就可以在Xcode控制臺看到下面的輸出信息:


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


有些iphone手機通過手機的IP和端口號還不能訪問,此時需要將手機的端口轉(zhuǎn)發(fā)到mac上,終端運行以下命令

iproxy 8100 8100
將手機的8100端口,映射到電腦的8100端口上。這樣我們就能通過訪問電腦的8100端口來訪問到手機了。

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

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

appium-desktop (server)
打開下載的appium desktop

點擊 start server


因為新版本的 inspector 和 appium-desktop 分離了,我們需要去github下載inspector。
下載地址

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


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

運行成功后,會彈出一個控制界面,在該界面中可以看到手機運行程序的布局元素。


自動化用例編寫


打開pycharm,新建一個項目。

安裝依賴,

pip install selenium
pip install Appium-Python-Client

編寫自動化測試用例代碼,

#! /usr/bin/env pyhton
# -*- coding:utf-8 -*-
# author:jeff.xie
# datetime:2023/11/22 16:23
# software:PyCharm# iphone app 啟動成功實戰(zhàn)測試用例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 == '用戶名稱'")
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自動化環(huán)境的過程,記錄下來。也方便自己回頭來看,也方便新人學(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://m.aloenet.com.cn/news/33605.html

相關(guān)文章:

  • 廣東一站式網(wǎng)站建設(shè)報價百度網(wǎng)址大全舊版安裝
  • 焦點網(wǎng)站設(shè)計seo交互論壇
  • 黨建專欄 文字說明 網(wǎng)站建設(shè)福州seo網(wǎng)站排名
  • 凡科建站是什么推廣如何做網(wǎng)上引流
  • web前端開發(fā)工程師面試自我介紹seo關(guān)鍵詞排名優(yōu)化如何
  • 網(wǎng)站建設(shè) 資質(zhì)榮譽互聯(lián)網(wǎng)推廣引流公司
  • 做百度網(wǎng)站圖片怎么做百度網(wǎng)站排名seo
  • 杭州網(wǎng)站推廣怎樣做長沙網(wǎng)站搭建關(guān)鍵詞排名
  • asp.net 網(wǎng)站壓縮b站推廣入口2023mmm無病毒
  • 上海浦東新區(qū)網(wǎng)站百度網(wǎng)址瀏覽大全
  • 做視頻直播網(wǎng)站需要多少資金百度官方電話號碼
  • 網(wǎng)站做cnzz流量統(tǒng)計關(guān)鍵詞優(yōu)化排名的步驟
  • 如何做網(wǎng)站數(shù)據(jù)分析網(wǎng)絡(luò)營銷包括
  • 門戶網(wǎng)站平臺建設(shè)情況網(wǎng)絡(luò)優(yōu)化seo
  • 如何手機創(chuàng)建網(wǎng)站百度收錄網(wǎng)站要多久
  • 東莞振安保安公司網(wǎng)絡(luò)推廣優(yōu)化seo
  • 株洲網(wǎng)站seo優(yōu)化價格鄭州高端網(wǎng)站建設(shè)哪家好
  • 公司網(wǎng)站seo優(yōu)化的線上營銷推廣方式
  • 騰訊云 wordpress教程視頻seo外鏈推廣
  • wordpress+技術(shù)類模板網(wǎng)站seo優(yōu)化有哪些方面
  • 在什么網(wǎng)站可以接活做梅州網(wǎng)絡(luò)推廣
  • 布料市場做哪個網(wǎng)站好代寫軟文
  • 動漫網(wǎng)站設(shè)計方案華為手機軟文范文300
  • 網(wǎng)站群如何做網(wǎng)站seo快速優(yōu)化軟件
  • 單位網(wǎng)站中文域名到期續(xù)費seo的培訓(xùn)班
  • 梧州網(wǎng)站建設(shè)設(shè)計百度服務(wù)電話在線人工
  • 做網(wǎng)站用什么字體字號seo技術(shù)優(yōu)化服務(wù)
  • wordpress換域名了 登陸不了五年級下冊數(shù)學(xué)優(yōu)化設(shè)計答案
  • 域名 備案 沒有網(wǎng)站嗎網(wǎng)絡(luò)營銷的有哪些特點
  • 怎么自己做網(wǎng)站嚇別人佛山seo聯(lián)系方式