一脱茉、創(chuàng)建工程虛擬環(huán)境問題
(一).工程環(huán)境創(chuàng)建
1.location為工程存儲(chǔ)的位置
2.Vietualenv:編譯器的虛擬環(huán)境
3.New environment using下的Location:虛擬環(huán)境存儲(chǔ)的位置
4.New environment using下的Base interpreter:基礎(chǔ)編譯器牧抵,即系統(tǒng)安裝的python
5.Inherit global site-packages:勾選上的話代表創(chuàng)建的新項(xiàng)目需要copy一份全局包到虛擬環(huán)境栖疑。
6.Make available to all projects:勾選上缀磕,表示,當(dāng)在虛擬環(huán)境下安裝包的時(shí)候姐军,copy一份到全局缺狠。
注意:
全局包存放在python安裝目錄下的\Lib\site-packages子目錄里。
虛擬環(huán)境包安裝在關(guān)聯(lián)的項(xiàng)目目錄下面的${虛擬環(huán)境名}\Lib\site-packages子目錄里
(二).Project Structure
介紹上圖紅色框框中的作用:標(biāo)識(shí)文件
Sources:通過為此類別分配文件夾型雳,您可以告訴IDE編譯器此文件夾及其子文件夾包含應(yīng)作為構(gòu)建過程的一部分進(jìn)行編譯的源代碼当凡。
Excluded:(1) 不會(huì)索引該文件夾內(nèi)的文件, 也就是不再顯示indexing
(2)因?yàn)椴辉偎饕募A內(nèi)的文件, 所以使用全局搜索功能時(shí)也不會(huì)檢查該文件夾內(nèi)的文件
Templates:模板設(shè)置
Resources:適用于您的應(yīng)用程序中使用的資源文件(圖像,各種配置XML和屬性文件等)纠俭。
二沿量、出現(xiàn)original error could not proxy command to remote server. original error error socket hang up
解決方法:
a.在控制臺(tái)中輸入一下兩條命令,再重新安裝uiautomator2即可
adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.test
b.重啟appium
三冤荆、出現(xiàn)Unresolved Attributed Reference朴则,如下圖:
發(fā)生原因:
在該類中定義的driver屬性為WebDriver(WebDriver庫(kù)屬于Selenium框架),而以上代碼中調(diào)用的open_notifications()和press_keycode()方法是屬于webdriver庫(kù)(webdriver庫(kù)屬于appium框架)钓简,所以需要在該類中導(dǎo)入webdriver類佛掖,并在類中將driver聲明為webdriver
解決方法:
a.查看open_notifications()方法所在的包有沒有在venv→Lib→site-packsges下
b.查看driver是否有定義,在類下定義driver的屬性涌庭,如下圖:
四芥被、* 傳參問題
# 通過ID定位(*表示參數(shù)數(shù)量不定,無(wú)*表示參數(shù)數(shù)量固定)
a:
def find_element(self, locator):
return self.driver.find_element(*locator)
b:
def find_element_xpath(self, *locator):
return self.driver.find_element_by_xpath(*locator)
如上例題:
*locator:表示傳入的參數(shù)數(shù)量是不固定的坐榆,可以傳一個(gè)或多個(gè)參數(shù)
locator:表示傳入的參數(shù)數(shù)量固定為一個(gè)
五拴魄、Unicode的解碼使用gbk解碼方式
參數(shù)化讀取自外部的yaml文件,獲取yaml文件例子中席镀,讀取yaml文件會(huì)出現(xiàn)下圖中的問題
編寫如下:
search_context_data = yaml.safe_load(open(path, "r"))
會(huì)出現(xiàn)如下問題
問題分析:
錯(cuò)誤的意思是:Unicode的解碼(Decode)出現(xiàn)錯(cuò)誤了匹中,以gbk編碼的方式去解碼(該字符串變成Unicode),但是此處通過gbk的方式豪诲,卻無(wú)法解碼(can't decode).''illegal multibyte sequence"的意思是非法的多字節(jié)序列顶捷,也就是說無(wú)法解碼了。
出現(xiàn)這樣的錯(cuò)誤屎篱,可能是要處理的字符串本身不是gbk編碼服赎,卻是以gbk編碼去解碼葵蒂。比如,字符串本身是utf-8的重虑,但用gbk去解碼践付,必然出錯(cuò)。
解決問題:
讀取yaml文件時(shí)添加一行代碼(utf-8)即可缺厉,如下:
search_context_data = yaml.safe_load(open(path, "r", encoding= "utf-8"))
六永高、日志文件輸出亂碼
使用python的logging模塊記錄日志,有時(shí)會(huì)遇到中文編碼問題錯(cuò)誤提针。
在logging.FileHandler(path) 中添加指定編碼方式 encoding='utf-8' 即可命爬,logging.FileHandler(path, encoding='utf-8') 。
上栗子:
# 借助handle將日志輸出到文件中
fh = logging.FileHandler(filename, encoding='utf-8')