亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python3--selenium--unittest。長時間未使用,編寫UI

系統(tǒng) 1554 0

前言:自動化測試存在比較多的使用限制,會存在某段時間無法使用的生疏期。通過這篇文章記錄項目編寫程序中遇到的問題以及解決思路,希望對以后的自動化開發(fā)能有些幫助。

本篇記錄5個問題:

問題6:獲取列表中,整行整列數(shù)據(jù)的方法

問題7:數(shù)據(jù)無法獲取眾多原因之一:列表中同一位置元素,html格式不同。

問題8:for循環(huán)與try使用錯誤

問題9:確認(rèn)網(wǎng)頁是否打開的方法之一:使用title

問題10:selenium操作下拉選項內(nèi)容

?

問題6:獲取列表中,整合整理額數(shù)據(jù)的方法:

? ? ? ? 操作網(wǎng)頁中,經(jīng)常會出現(xiàn)列表,如果使用selenium獲取一個列表的所有數(shù)據(jù)。目前可行的方法核心是For循環(huán)+Xpath路徑。

1.? 獲取整個表單tbody的xpath路徑:list = driver.find_element_by_xpath("http://*[@id="***"]/tbody")

2. 獲取有效數(shù)據(jù)第一行,第一列的數(shù)據(jù): test_click = list.driver.find_element_by_xpath("http://*[@id="***"]/tbody/tr[1]/td[1]/b")。這一步實際上可以不應(yīng)用list,引用list能夠?qū)⒎秶s小到特定的列表。如果頁面只有一個列表,則不需要獲取list

3. 獲取有效數(shù)據(jù)第二行,第一列的數(shù)據(jù):test_click2 =?list.driver.find_element_by_xpath("http://*[@id="***"]/tbody/tr[2]/td[1]/b")

4. 獲取有效數(shù)據(jù)第一行,第二列的數(shù)據(jù):test_click3 = list.driver.find_element_by_xpath("http://*[@id="***"]/tbody/tr[1]/td[2]/b")

按照規(guī)律,如果想要獲取某個特定列的數(shù)據(jù)則:

test_list = []

for?i?in range(1,最大列個數(shù)):

? ? test_list.append(list.driver.find_element_by_xpath("http://*[@id="***"]/tbody/tr[{}]/td[1]/b".format(i)))

取特定行也類似。

?

問題7:數(shù)據(jù)無法獲取眾多原因之一:列表中同一位置元素,html格式不同。

? ? ? ?html頁面中部分字段由于顯示內(nèi)容不同,html中的名稱內(nèi)容也不同。selenium如果不做處理,就會導(dǎo)致程序運行到某一步因找不到元素而報錯。NoSuchElementException。處理這種問題,常用 異常處理【 try,except,else,final】

? ? ? ?

            
try:
//某個字段可能由于內(nèi)容不同導(dǎo)致html格式不同,無法使用同一個xpath獲取到
    Status = table.find_element_by_xpath('//*[@id="instances"]/tbody/tr[%s]/td[4]/b'%count).text
    
except NoSuchElementException:  //取不到字段的時候,就開始運行另一種形式
    Status = table.find_element_by_xpath('//*[@id="instances"]/tbody/tr[%s]/td[4]/font/b/b' % count)
    count_parren = table.find_element_by_xpath('//*[@id="instances"]/tbody/tr[%s]/td[4]/'% count).text
    count = re.search('\(\d\)', count_parren).group()
final: driver.quit()  //最后退出瀏覽器

          

問題8:for循環(huán)與try使用錯誤

? ? ? ? 主要是對try使用方法的不理解,導(dǎo)致的問題。

? ? ? ? try:當(dāng)執(zhí)行其中的方法出現(xiàn)錯誤后,就會直接跳出try中的代碼。相當(dāng)于發(fā)現(xiàn)報錯,就執(zhí)行了break。所以當(dāng)try中寫入了for循環(huán)后,任何一次執(zhí)行內(nèi)容出現(xiàn)了異常,都會跳出整個for循環(huán)。

? ? ? ? 解決方法也很簡單,值需要將try寫到for循環(huán)中。

            
for count in range(1,len(Application_List)+1):
    try:
        Applation = table.find_element_by_xpath('//*[@id="instances"]/tbody/tr[%s]/td[1]/b'%count).text
    except NoSuchElementException:
        break
          

問題9:確認(rèn)網(wǎng)頁是否打開的方法之一:使用title

? ? ? ? 有個自動化需求的描述是,訪問地址判斷服務(wù)是否啟動。接到需求的時候,考慮捕捉該網(wǎng)址特定的字段,能夠捕捉到就算啟動了。這種方案的問題在于,每個頁面的內(nèi)容不一致,每個都需要寫,很要命。所以就想有沒有一個所有頁面都使用但是內(nèi)容還各不相同的用于區(qū)別頁面以及驗證是否啟動。這個時候就先到了,Title

? ? ? ? selenium中也有取title的方法:driver.title

? ? ? ? 開發(fā)內(nèi)容就分為了兩步:第一步,根據(jù)提供的地址獲取title,寫入配置文件中。

第一步,只是取title的過程用自動化執(zhí)行了,然后打印出title,復(fù)制粘貼到excel里。當(dāng)然也可以直接寫入excle,就是比較麻煩,一次性完成的內(nèi)容,還是手動操作能快些。

第二部,實際測試的時候,取title與配置文件中的比較。

            
for Key, Value in URL_Dict.items():
    # 驗證內(nèi)容正確性
    driver = browser_config['chrome']()
    uihandle = UIHandle(driver)
    try:
        uihandle.get(Value[0])
        sleep(2)
        # 獲取登陸頁面的Title信息
        Server_Title = driver.title
        # 獲取的Title與config中的title比較,如果不同,則說明頁面沒啟動
        if Server_Title == Value[1]:
            # print("{Key}:{url} 已經(jīng)啟動".format(Key = Key, url = Value[0]))
            self.TestReport['Total_Success'] += 1
        else:
            print('*'* 50)
            print("{Key}:{url} 環(huán)境未啟動".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:
        self.TestReport["Error_Report"].append("""{Key}:{url}
        該地址無法訪問
        """.format(Key = Key, url = Value[0]))
        self.TestReport['Total_Failures'] += 1
    finally:
        driver.quit()
          

問題10:selenium操作下拉選項內(nèi)容

? ? ? ? UI自動化經(jīng)常會需要點擊一些下拉選項。目前可行的方法是,先獲取控件位置以及選項位置。然后先點擊控件再點擊選項。就能夠完成選項選擇

            
uihandle.Click("前端", '性別選型')
uihandle.Click("前端", '男')
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久免费区一区二区三波多野 | 手机看片福利在线 | 精品国产日韩亚洲一区二区 | 手机国产日韩高清免费看片 | 香蕉在线影院 | 一级毛片一级毛片一级毛片aa | 亚洲a视频 | aaaaa级毛片 aaaa级毛片欧美的 | 九七97影院理论片手机在线观看 | 天天干夜夜玩 | 日本夜爽爽一区二区三区 | 国产高清精品久久久久久久 | 国产精品久久精品 | 免费爽视频 | 97福利| 久草经典视频 | 国产精品九九久久一区hh | 国产成人毛片亚洲精品不卡 | 狠狠色丁香婷婷综合视频 | 全部免费特黄特色大片视频 | 国产精品99久久久久久宅男 | 成人网中文字幕色 | 台湾成人性视频免费播放 | 日日爽日日操 | 日本一区二区三区在线 观看网站 | 成人a毛片视频免费看 | 欧美在线观看一区 | 一级片aaaaaa | 日本狠狠操 | 国产精品青草久久 | 国产精久久一区二区三区 | 91一区二区三区四区五区 | 国产一区二区三区不卡免费观看 | 精品精品国产理论在线观看 | www.色在线| 久久综合香蕉 | 免费观看大片bbb | 亚洲成a人片在线观看精品 亚洲成a人一区二区三区 | 男人的天堂欧美精品色偷偷 | 欧美成综合网网站 | 国产中文字幕亚洲 |