前言:自動化測試存在比較多的使用限制,會存在某段時間無法使用的生疏期。通過這篇文章記錄項目編寫程序中遇到的問題以及解決思路,希望對以后的自動化開發能有些幫助。
本篇記錄5個問題:
問題1:如何激活pycharm
問題2. 搭建selenium + unittest開發環境
問題3:顯示等待、隱式等待理解錯誤
問題4:格式化字符串方法
問題5:某一步頁面無法響應,如何保證自動化程序能夠繼續運行,不受報錯影響
?
問題1:如何激活pycharm:
? ? 網上找的攻略,想在已經激活了,但是忘了具體用的是那個版本的了,以后搭建環境的時候,再補充。
? ? 解決方法:找攻略
問題2. 搭建selenium + unittest開發環境:
? ? 解決方法:pycharm--file--setting--Project:Progrem--Project Interpreter
導入selenium包:創建成功后,再列表中會顯示selenium。這樣操作的只對你當前開發的包可用,每次新創建一個包,就需要重新引用下。
? ? unittest是python中內置的框架,不需要導包,直接在需要使用的文件中,import unittest就可以了。至于unittest框架里有哪些內容,如何使用,網上有很多詳細的說明,筆者自己還記得,就不細說了,如果使用中遇到什么問題,可以在評論中討論。筆者看到一定會給出自己的理解建議。
問題3:顯示等待、隱式等待理解錯誤:
? ? 解決方法:顯示等待是在定位頁面某個元素,這個元素沒取到,就等待;取到了,就完成操作進入下一步;在配置的等待時間內還沒渠道,則會拋出異常。隱式等待,等待的是整個頁面完成加載。
顯示等待效率要高于隱式等待。
顯示等待的添加方法:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
el = WebDriverWait(cls.driver, 10).until(EC.presence_of_element_located('class', 'test'))
問題4:格式化字符串方法:
? ? ? ? 解決方法:python字符串格式化有兩種:
1.? 使用%? ?例如:?
'//*[@id="instances"]/tbody/tr[%s]/td[2]/b' % count
2. 使用.format? ?例如:
"{Key}:{url} 環境未啟動".format(Key = Key, url = Value[0])
format方法可以通過位數來定位、也可以通過代碼值進行對應 例如:print("{0:2d}{1:.3f}{site}".format(200, 3.1415, site = "gg"))
也可以直接進行轉化: !a? 轉化為:ascii? ? ? !s 轉化為:str? ? ?!r? ?轉化為:repr
問題5:某一步頁面無法響應,如何保證自動化程序能夠繼續運行,不受報錯影響
? ? ? ? 解決方法:引入異常處理:try? ? ?except? ? ?else? ? ?finally
1. 首先需要知道哪一步操作會出現error。 將這一步寫入到try中
2. 然后確認error內容。except? 中記錄這個error類型、同時需要在文件中引入error類型
3. 最后進行異常處理。出現異常之后系統進行什么操作,保證能夠繼續運行。可以是數據處理或者下一步操作等
from selenium.common.exceptions import InvalidArgumentException # 運入報錯error類型 try: # 將可能發生錯誤內容,寫入try中 uihandle.get(Value[0]) sleep(2) # 獲取登陸頁面的Title信息 Server_Title = driver.title # 獲取的Title與config中的title比較,如果不同,則說明頁面沒啟動 if Server_Title == Value[1]: # print("{Key}:{url} 已經啟動".format(Key = Key, url = Value[0])) self.TestReport['Total_Success'] += 1 else: print('*' * 50) print("{Key}:{url} 環境未啟動".format(Key=Key, url=Value[0])) self.TestReport['Total_Failures'] += 1 self.TestReport["Error_Report"].append("""{Key}:{url} 該地址未完成啟動 """.format(Key=Key, url=Value[0])) except InvalidArgumentException: # 填寫error類型,系統捕捉到錯誤后不再停止,而是執行except中的程序 self.TestReport["Error_Report"].append("""{Key}:{url} 該地址無法訪問 """.format(Key=Key, url=Value[0])) self.TestReport['Total_Failures'] += 1 finally: # 執行完try、except后,最后兩者都需要執行的內容,寫入finally driver.quit()
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
