unittest報錯信息-解決方案

1.@property 標籤,用於封裝接口,使用當前標籤可以引用框架的方法
在這裏插入圖片描述
2.page定位異常:maximum recursion depth exceeded —問題描述:由於嵌套太多超過最大遞歸深度
解決方法:手動調整遞歸深度
import sys
sys.setrecursionlimit(100000)
導致問題的場景:
在這裏插入圖片描述
3.driver.implicitly_wait()與time.sleep()的區別

implicitly_wait(5)屬於隱式等待,5秒鐘內只要找到了元素就開始執行,5秒鐘後未找到,就超時;

time.sleep(5)表示必須等待5秒定位;

如何靈活運用這兩種方式:

當某個頁面元素變化多,影響多的情況下,用sleep,等頁面元素穩定了,再定位。

如果用implicitly_wait(5),還沒等頁面元素穩定後就定位 ,導致定位不準確,比如操作某個元素後,會出現提示框,影響了後面元素的位置,導致定位不準確;所以用sleep,等提示框消失後開始定位

4.智能等待,用於解決每次都要顯式等待太耗費時間的問題-但是遇到問題 click按鈕無法點擊,是由於已經獲取到元素但是按鈕還沒展示出來導致的,報錯信息如下,解決方式使用sleep()
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
出現此問題的原因是因爲定位到元素後有一瞬間無法進行點擊,因此在獲取到元素後添加等待1秒使元素可以點擊,完美解決。
在這裏插入圖片描述
presence_of_element_located與visibility_of_element_located區別
presence_of_element_located: 當我們不關心元素是否可見,只關心元素是否存在在頁面中。
visibility_of_element_located: 當我們需要找到元素,並且該元素也可見。

5.driver內置保存截圖方法

# nowTime = time.strftime("%Y%m%d.%H.%M.%S")
# imgUrl = REPORT_PATH + '\\imgs\\'
# self.driver.get_screenshot_as_file(imgUrl + '%s.png' % nowTime)

6.在page層寫斷言提示缺少參數問題,報錯信息如下:
assertEqual() missing 1 required positional argument: ‘second’。
沒實例化對象導致的
在這裏插入圖片描述
7.靜態方法 和 類方法
@staticmethod
靜態方法,通過類直接調用,不需要創建對象,不會隱式傳遞self
@classmethod
類方法,方法中的self是類本身,調用方法時傳的值也必須是類的公有屬性,
就是說類方法只能操作類本身的公有字段

8.Windows下解決ImportError: cannot import name ‘main’

  • 卸載現在的pip:
  • python -m pip uninstall pip
  • 重裝:
  • python -m pip install pip==19.0.3

9.Element:ElementClickInterceptedException 異常解決

意思是說,點擊這個元素的時候,這個單擊事件被上層的div給接收了……說明div覆蓋在這個button上面。
element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
driver.execute_script("arguments[0].click();", element)

element = driver.find_element_by_css('div[class*="loadingWhiteBox"]')
webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()、
***ps:思索,有時候日誌所報的錯誤可能不是當前頁面的錯誤,而是上一個頁面的錯誤,再遇到問題時候應從報錯頁的上一步開始檢查!!!

10.ImportError: No module namedXXX

有可能是運行時編譯器選擇問題

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fUqduBOu-1587401734410)(/server/../Public/Uploads/2020-04-15/5e96719468bc2.png)]

11. assertEqual() missing 1 required positional argument: ‘second’

解決方案:
def test_python4():
	m = unittest.TestCase()
	m.assertEqual(1.1, 1.1, msg="error")
原因:
python實例化(創建對象)時寫成mm = unittest.TestCase不可以不帶括號,因爲不加括號就不是啓動實例,這個和設置一個別名是一樣的(說白了 加括號就是調用init函數 不加括號就是不調用init函數,不調用init函數就無法使用參數)。
場景:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CvQFsg5Y-1587401734412)(/server/../Public/Uploads/2020-04-17/5e99070c2bacd.png)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章