1. 程式人生 > >Appium+python自動化(三十三)- 環境(超詳解)

Appium+python自動化(三十三)- 環境(超詳解)

簡介

  在前邊所有涉及啟動app的時候有這樣一行程式碼driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps),很多小夥伴們和同學們不知道這個ip和埠哪裡來的,我覺得有必要給小夥伴解釋一下,於是巨集哥決定寫一篇關於這個appium的伺服器ip文章! 來給大家答答疑,解解惑!這樣就不會問一些比較幼稚的問題,讓別人看了笑話,笑掉大牙了。eg:巨集哥,巨集哥,巨集哥,那個我在測試伺服器搭建測試環境,我是不是就只能在測試伺服器上除錯程式碼,然後進行測試了。那這樣我還的搭建一套別寫指令碼的環境。。。。等等的傻白寡的問題,Remote 我們先給他相一相面,就知道它的意思是:遠端。那麼我們是不是把那個IP地址修改成測試伺服器的IP,一切問題是不是就迎刃而解了。

目的

  一般來說appium中127.0.0.1這個地址的預設的不需要修改。在做自動化過程中,如果遇到需要遠端操作的話,這個功能就可以派上用場了。想想看,如果公司給你單獨配置一臺跑自動化測試電腦,然後自己工作的電腦寫指令碼,在自動化機器上執行指令碼,這樣工作自動化兩不誤,是不是很爽呢? 

說明

127.0.0.1

127.0.0.1是環回(loopback)地址,用來測試本機的TCP/IP協議棧,比如你在cmd裡輸入:ping 127.0.0.1:

 

看到的就是向本機發送請求包,這個請求只會在你的本地跑,不會通過網路傳送出去。

 “本地”,你一定還想到了localhost,開啟你的hosts檔案(右鍵選擇用notenotepad++開啟):

可以看到:

是的,127.0.0.1和localhost的是“等價的”:

localhost是個域名,性質跟 “www.baidu.com” 差不多。(不能直接繫結套接字,必須先gethostbyname)轉成IP才能繫結——括號裡的字我也不太明白。也就是說你的localhost預設的ip就是127.0.0.1。

現在我們就可以這樣理解了,地址寫127.0.0.1的意思就是要在本地進行訪問:

我們把地址直接寫成localhost,這樣也是可以調通的。

埠號:4723

這個值不是固定的,唯一的要求就是——不要衝突,你可以在cmd你檢視目前佔用的埠號,輸入命令

netstat -ano檢視所有端口占用;

netstat -ano | findstr “4723” 檢視4723埠號被哪個程式佔用

第一個沒有檢視到程式,因為巨集哥沒有開啟appium

巨集哥開始啟動appium第二個檢視到了

也可以開啟你的appium:

   

在這裡就可以修改埠號了,但是你在這裡怎麼改埠號,那麼你程式碼裡就要對應的修改埠號。

/wd/hub

將滑鼠定位到remote 放在上邊,然後按住Ctrl點選滑鼠左鍵進入原始碼,我們來看原始碼:

可以看到,WebDriver類在初始化時也定義了一個地址,除了埠號不一樣其它的和我們傳的是一樣的。因此我們就可以簡單的把/wd/hub理解為——(烏龜的屁股--龜腚)規定。

設定IP 

1.開啟appium>General Setting介面

  2.這裡用個appium預設的服務端地址127.0.0.1埠4723,一般在自己機器上除錯,無需修改

訪問地址

1.程式碼裡面的那個地址到底指向的是哪裡呢?

啟動appium服務後,在瀏覽器輸入:http://127.0.0.1:4723/wd/hub。出現如下圖所示,說明服務啟動成功,可以把appium看出是一個服務端。

2.appium後臺訪問日誌

配置測試機

1.一臺工作電腦,一臺跑自動化測試的電腦,如何用工作的電腦遠端控制自動化測試的那臺電腦呢?

2.測試電腦上的appium服務地址改成本機IP地址如:192.168.1.1(注意注意注意!!!這裡要是本機的ip地址)

  3.啟動測試電腦上的appium。(可以看到日誌啟動的address 192.0.0.1,port 4723)  

遠端操作

1.在自己工作電腦上開啟瀏覽器輸入:192.168.1.1:4723/wd/hub。這一步很重要,一定要看到如下介面,確認遠端連結成功.

 2.腳本里面的程式碼修改下地址

3.測試機上環境準備好後,在本機上執行指令碼,於是測試機上可以自動運行了。 

小結

1.首先 localhost 是一個域名,在過去它指向 127.0.0.1 這個IP地址。在作業系統支援 ipv6 後,它同時還指向ipv6 的地址 [::1]
在 Windows 中,這個域名是預定義的,從 hosts 檔案(c:\windows\system32\drivers\etc\hosts)(etc/hosts)中可以看出:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
而在 Linux 中,其定義位於 /etc/hosts 中:
127.0.0.1 localhost
注意這個值是可修改的,比如我把它改成
192.068.206.1 localhost
然後再去 ping localhost,提示就變成了
PING localhost (192.168.206.1) 56(84) bytes of data.
當然一般人不會像我這麼蛋疼。
————分割線—說完localhost再說127.0.0.1————
127.0.0.1 這個地址通常分配給 loopback 介面。loopback 是一個特殊的網路介面(可理解成虛擬網絡卡),用於本機中各個應用之間的網路互動。只要作業系統的網路元件是正常的,loopback 就能工作。Windows 中看不到這個介面,Linux中這個介面叫 lo:
#ifconfig
eth0 Link encap:Ethernet hwaddr 00:00:00:00:00:00
inet addr :192.168.0.1 Bcase:192.168.0.255 Mask:255.255.255.0
......
lo Link encap:Local Loopback
inetaddr: 127.0.0.1 Mask: 255.0.0.0
......
可以看出 lo 介面的地址是 127.0.0.1。事實上整個 127.* 網段都算能夠使用,比如你 ping 127.0.0.2 也是通的。
但是使用127.0.0.1作為loopback介面的預設地址只是一個慣例,比如下面這樣:
#ifconfig lo 192.168.128.1
#ping localhost #糟糕,ping不通了
#ping 192.128.128.1 # 可以通
#ifconfig lo
lo Link encap:Local Loopback
inetaddr: 192.168.128.1 Mask: 255.255.255.0
......
當然,一般人更不會像我這樣蛋疼。如果隨便改這些配置,可能導致很多隻認 127.0.0.1 的軟體掛掉。
————分割線—說完127.0.0.1再說本機地址————
確切地說,“本機地址”並不是一個規範的名詞。通常情況下,指的是“本機物理網絡卡所繫結的網路協議地址”。由於目前常用網路協議只剩下了IPV4,IPX/Apple Tak消失了,IPV6還沒普及,所以通常僅指IP地址甚至ipv4地址。一般情況下,並不會把 127.0.0.1當作本機地址——因為沒必要特別說明,大家都知道。
本機地址是與具體的網路介面繫結的。比如乙太網卡、無線網絡卡或者PPP/PPPoE撥號網路的虛擬網絡卡,想要正常工作都要繫結一個地址,否則其他裝置就不知道如何訪問它。

————最後總結一下區別————

  • localhost 是個域名,不是地址,它可以被配置為任意的 IP 地址,不過通常情況下都指向 127.0.0.1(ipv4)和 [::1](ipv6)
  • 整個127.* 網段通常被用作 loopback 網路介面的預設地址,按慣例通常設定為 127.0.0.1。這個地址在其他計算機上不能訪問,就算你想訪問,訪問的也是自己,因為每臺帶有TCP/IP協議棧的裝置基本上都有 localhost/127.0.0.1。
  • 本機地址通常指的是繫結在物理或虛擬網路介面上的IP地址,可供其他裝置訪問到。
  • 最後,從開發度來看
    • localhost是個域名,性質跟 “www.baidu.com” 差不多。不能直接繫結套接字,必須先gethostbyname轉成IP才能繫結。
    • 127.0.0.1 是繫結在 loopback 介面上的地址,如果服務端套接字繫結在它上面,你的客戶端程式就只能在本機訪問。
    • 如果主機中存在多個網絡卡,分別連線不同的物理網路,比如 192.168.0.1/255.255.255.0 和 192.168.1.1/255.255.255.0,那麼當你的服務端套接字綁到 192.168.0.1 這個地址上時,位於 192.168.1.* 網段的其他計算機是無法連線的,只有位於192.168.0.* 網段的計算機才能訪問你的服務端程式。

2.好了,今天就分享到這裡,想必各位小夥伴和童鞋們對這一行程式碼衍生出來的問題都有了一個新的認識。

 

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點選右邊的小球即可!(^__^) 嘻嘻……)

 

       個人公眾號                                                             微信群 (微信群已滿100,可以加巨集哥的微信拉你進群,請備註:進群)          

                                                                 

相關推薦

Appium+python自動化十三- 環境

簡介   在前邊所有涉及啟動app的時候有這樣一行程式碼driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps),很多小夥伴們和同學們不知道這個ip和埠哪裡來的,我覺得有必要給小夥伴解釋一下,於是巨集哥決定寫一篇關於這個a

Appium+python自動化十三- 測試環境和本地環境傻傻滴分不清楚-Remote

  簡介   在前邊所有涉及啟動app的時候有這樣一行程式碼driver = webdriver.Remote('http://

Appium+python自動化- 環境搭建—上

 簡介   今天是高考各地由於降水,特別糟糕,各位考生高考加油,全國人民端午節快樂。最近整理了一下自動化的東西,先前整理的python介面自動化已經接近尾聲。即將要開啟新的征程和篇章(Appium&python)。那麼首相的問題就是搭建環境了。好久沒搭建環境又踩了不少坑,appium的環境

Appium+python自動化- 環境搭建—下

簡介    巨集哥的人品還算說得過去,雖然很久沒有搭建環境了,但是換了新電腦裝置,一氣呵成,將android的測試開發環境已經搭建準備完畢。上一篇android測試開發環境已經準備好, 那麼接下來就是appium的環境安裝和搭建了。 嘿嘿!巨集哥和小夥伴們開個玩笑,不要覺得自人品不好,就不會成功

Appium+python自動化- SDK Manager

簡介   本來巨集哥一開始打算用真機做的,所以在前邊搭建環境時候就沒有下載SDK,但是由於許多小夥伴通過部落格發短訊息給巨集哥留言說是沒有真機,所以順應民意整理一下模擬器,畢竟“得民心者,得天下”。SDK顧名思義,Android SDK Manager就是一個Android軟體開發工

Appium+python自動化十三- 輸入中文 - 一次填坑記

簡介     無論你在哪裡,在做什麼都會遇到很多坑,這些坑有些事別人挖的,有些是自己挖的。別人挖的叫坑人,自己挖的叫自殺,兒子挖的叫坑爹。因此在做app自動化道路上也不會是一帆風順的,你會踩很多坑,這些坑和你就是你死我活的節奏,不是坑把你埋了,就是你把坑填了。由於咱們都是黃面板的中國人用

Appium+python自動化十三- 與Capability完美懈垢之解讀

簡介   Capability又叫Appium Desired Capabilities,前邊寫了那麼多例項程式碼,小夥伴可以發現一些規律,就是有一部分程式碼總是重複的出現在你的視線中。這部分就是對Capability的配置。那麼今天給小夥伴們分享、介紹和講解一下Capability。讓你知道她的來龍去脈,

Appium+python自動化二十二- 個臭皮匠頂個諸葛亮-控制元件座標獲取

簡介   有些小夥伴或者是童鞋可能會好奇會問上一篇中的那個monkey腳本里的座標點是如何獲取的,不是自己隨便蒙的猜的,或者是自己用目光或者是尺子量出來的吧,答案當然是:NO。獲取控制元件座標點的方式這裡巨集哥給小夥伴們分享和講解三種方法(也就是三個臭皮匠),巨集哥個人喜歡第二種,也推薦小夥伴們和童鞋們使用

Appium+python自動化十三- 真假美猴王Monkeyrunner與Monkey傻傻的分不清楚

簡介   看《西遊記》第五十七回,說是“六耳獼猴”化作孫悟空的摸樣,傷了唐僧,後又和孫悟空大打出手…… 這位假孫悟空,實力不用多說了吧,和真孫悟空一般無二,大戰孫悟空,鬧到上天入地下海。 在唐僧那:念緊箍咒,兩個都喊疼,自然看不出哪個真假; 到天宮:拖塔天

Appium+python自動化- 實現程式碼與資料分離 - 資料配置-yaml

簡介 本篇文章主要介紹了python中yaml配置檔案模組的使用讓其完成資料和程式碼的分離,巨集哥覺得挺不錯的,於是就義無反顧地分享給大家,也給大家做個參考。一起跟隨巨集哥過來看看吧。 思考問題 前面我們配置Capability時,各個引數都是在程式碼裡面寫死的,比如:desired_caps['pla

Appium+python自動化十一- 元芳,你怎麼看? - 日誌收集-logging

簡介 生活中的日誌是記錄你生活的點點滴滴,讓它把你內心的世界表露出來,更好的詮釋自己的內心世界,而電腦裡的日誌是有價值的資訊寶庫。 日誌檔案是專門用於記錄系統操作事件的記錄檔案或檔案集合,作業系統有作業系統日誌檔案,資料庫系統有資料庫系統日誌檔案,等等。 系統日誌檔案是包含關於系統訊息的檔案,包括核心、

Appium+python自動化十二- 程式碼寫死一時爽,框架重構火葬場 - PageObject+unittest

簡介 江湖有言:”程式碼寫死一時爽,框架重構火葬場“,更有人戲言:”程式碼動態一時爽,一直動態一直爽

Appium+python自動化十四- 有圖有真相,很美很精彩 - 螢幕截圖和Android APP型別簡介

簡介 在實際自動化專案執行過程中,很多時候App可以會出現各種異常,為了更好的定位問題,除了捕捉日誌我們還需要對執行時的裝置狀態來進行截圖。從而達到一種“有圖有真相”的效果。 截圖方法 方法1 save_screenshot() 該方法直接儲存當前螢幕截圖到當前指令碼所在檔案位

Appium+python自動化十五- 命令啟動appiumappium服務命令列引數

簡介 前邊介紹的都是通過按鈕點選啟動按鈕來啟動appium服務,有的小夥伴或者童鞋們乍一聽可能不信,或者會問如何通過命令列啟動appium服務呢?且聽巨集哥一一道來。 一睹為快 其實相當的簡單,不看不知道,一看嚇一跳,直接在docs命令視窗輸入命令:appium 就可以執行起appium 這回小夥

Appium+python自動化十六- 士兵突擊許多 - 多個appium服務啟動,多個裝置啟動,多程序併發啟動裝置-併發測試 - 上

簡介 前面課程只是啟動了單個appium服務,只能控制單臺裝置。如果需要針對多臺裝置測試那麼該如何處理?而且發現群裡的小夥伴們也在時不時地在討論這個問題,想知道怎麼實現的,於是巨集哥就決定寫一片這樣的文章來給小夥伴們,答答疑,解解惑。希望對各位小夥伴或者童鞋們有所幫助,可以是你們豁然開朗。 啟動多個app

Appium+python自動化十七- 士兵突擊許多 - 多個appium服務啟動,多個裝置啟動,多程序併發啟動裝置-併發測試 - 下

簡介  接著上一篇繼續看一下如何併發測試以及併發測試的過程中,可能遇到的問題,在這裡巨集哥把巨集哥遇到的和小夥伴或者童鞋們,一起分享一下。 Appium埠檢測 問題思考 經過前面學習,我們已經能夠使用python啟動appium服務,但是啟動Appium服務之前必須保證對應的埠沒有被佔用,否

Appium+python自動化十八 - Appium自動化測試框架綜合實踐 - 框架簡介-助你衝擊高薪,迎娶白富美

簡介 好久沒有更新部落格了,博友們是不是有點等不及了。不好意思啊,中秋節過後太忙了,這篇是好不容易抽點零碎時間寫的。從這一篇開始小夥伴或者童鞋們,就跟隨巨集哥的腳步,一步步的從無到有,從0到1的搭建一個完整的python+appium自動化測試框架。 框架背景 前面我們已經學習了Appium各種元素定位

Appium+python自動化十九-Appium自動化測試框架綜合實踐 - 程式碼實現

簡介   前邊一直在分享testng的相關文章,看了點贊量和閱讀數不是很高,巨集哥猜測估計是大家確實是用不到或者不喜歡吧!不過巨集哥經過一段時間的準備,appium的自動化測試框架完善的差不多了,那麼接下來巨集哥繼續給小夥伴和童鞋們分享有關Appium自動化測試框架綜合實踐。想必小夥伴們有點等不及了吧! dr

Appium python自動化測試系列之Capability介紹

語言 路徑 pla apk 過程 5.1 基礎 針對 driver ?5.1 Capability介紹 5.1.1 什麽是Capability 在講capability之前大家是否還記得在講log時給大家看過的啟動時的日誌?在我們的整個啟動日誌中會出現一些配置信息,其實那些

python介面自動化十九- logger 日誌 - 上

簡介  Python的logging模組提供了通用的日誌系統,可以方便第三方模組或者是應用使用。這個模組提供不同的日誌級別,並可以採用不同的方式記錄日誌,比如檔案,HTTP GET/POST,SMTP,Socket等,甚至可以自己實現具體的日誌記錄方式。    &nbs