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

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條評論
主站蜘蛛池模板: 天天爱天天干天天 | 欧美交换乱理伦片在线观看 | 精品国产免费观看一区 | 久久国语 | 国产亚洲精品久久久久久小说 | 日韩一级黄色大片 | 九九热在线视频观看这里只有精品 | 亚洲国产成人久久77 | 97色老99久久九九爱精品 | 99视频在线观看高清 | 狠狠久久综合 | 香蕉在线观看999 | 亚洲欧洲一区二区三区久久 | 日本人一级毛片免费完整视频 | 114毛片免费观看网站 | 精品无人区乱码一区二区三区手机 | 日本一区二区三区在线播放 | 男人天堂日韩 | 亚洲精品久久久久久动漫剧情 | 国产综合一区二区 | 狠狠躁夜夜躁人人爽天天段 | 日韩社区 | 亚欧成人一区二区 | 婷婷综合激情五月中文字幕 | 国产一级特黄aaaa大片野外 | 中文字幕伦理聚合第一页 | 午夜dj影院在线视频观看完整 | 中文字幕中文字幕在线 | 美国特级成人毛片 | 亚洲精品免费日日日夜夜夜夜 | 中国老妇色xxxxx | 天海翼一区 在线播放 | 玖玖爱精品 | 5g天天爽影院 | 一级片在线免费看 | 亚洲高清国产一线久久 | 国产一区91 | 久青草国产手机视频免费观看 | 亚洲精品综合久久中文字幕 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 精品一区二区三区在线成人 |