android 图片浏览控件_Android自动化测试23--Appium同步点
Android自動(dòng)化測(cè)試23
轉(zhuǎn)帖請(qǐng)注明出處!謝謝
Appium同步點(diǎn)
在自動(dòng)化測(cè)試過(guò)程中,需要解決測(cè)試腳本執(zhí)行速度和被測(cè)試軟件執(zhí)行速度相匹配的問(wèn)題,可以用同步點(diǎn)來(lái)解決。同步點(diǎn)是自動(dòng)化測(cè)試工具中的一個(gè)術(shù)語(yǔ),它是指在一個(gè)測(cè)試過(guò)程中,指示測(cè)試腳本等待應(yīng)用程序中某個(gè)特定過(guò)程運(yùn)行完成以后再運(yùn)行下一步操作。
測(cè)試過(guò)程中,如果需要指定測(cè)試工具暫停運(yùn)行一個(gè)測(cè)試或組件,直到特定的對(duì)象屬性存在后才開(kāi)始運(yùn)行下一步,那么可以插入同步點(diǎn)來(lái)實(shí)現(xiàn)。例如判斷進(jìn)度條是否已經(jīng)100%完成;判斷某一狀態(tài)消息的出現(xiàn);等待某按鈕狀態(tài)變?yōu)榭捎谩T贏ppium中提供了強(qiáng)制等待,隱性等待,顯性等待來(lái)充當(dāng)同步點(diǎn),解決測(cè)試腳本執(zhí)行中的同步問(wèn)題:
Sleep是最簡(jiǎn)單粗暴的一種解決方法,也就是強(qiáng)制等待,也就是在要對(duì)移動(dòng)應(yīng)用中的控件或者web頁(yè)面中的元素做動(dòng)作前,設(shè)置固定休眠時(shí)間,sleep特定秒數(shù)。
下例測(cè)試計(jì)算器代碼:
#coding:utf-8 import time from appium import webdriver from appium.webdriver.connectiontype import ConnectionTypedesired_caps = {} desired_caps['platformName'] = 'Android' # 設(shè)備系統(tǒng) desired_caps['platformVersion'] = '6.0' # 設(shè)備系統(tǒng)版本 desired_caps['deviceName'] = 'emulator-5554' # 設(shè)備名稱(chēng) desired_caps['appPackage'] = 'com.android.calculator2' desired_caps['appActivity'] = '.Calculator' driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) time.sleep(3) sleep(20) # 強(qiáng)制等待20秒再執(zhí)行下一步 #操作代碼 driver.quit()代碼中sleep(20)就是強(qiáng)制等待20秒,測(cè)試代碼不管瀏覽器是否加載完了,都得等待20秒,20秒一到,繼續(xù)執(zhí)行下面的代碼,這種做法作為調(diào)試很有用,實(shí)際項(xiàng)目中不建議用這種等待方式,嚴(yán)重影響程序執(zhí)行速度。
Implicit Wait稱(chēng)之為隱式等待,它是webdirver 提供的一個(gè)超時(shí)等待,影響是全局的。等待一個(gè)元素被發(fā)現(xiàn),或一個(gè)命令完成,如果超出了設(shè)置時(shí)間的則拋出異常。這種方式是比較簡(jiǎn)便的方式,設(shè)定程序預(yù)設(shè)等待的時(shí)間,
代碼:
#coding:utf-8 import time from appium import webdriver from appium.webdriver.connectiontype import ConnectionTypedesired_caps = {} desired_caps['platformName'] = 'Android' # 設(shè)備系統(tǒng) desired_caps['platformVersion'] = '6.0' # 設(shè)備系統(tǒng)版本 desired_caps['deviceName'] = 'emulator-5554' # 設(shè)備名稱(chēng) desired_caps['appPackage'] = 'com.android.calculator2' desired_caps['appActivity'] = '.Calculator' driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) driver.implicitly_wait(5) # 秒 #操作代碼 driver.quit()預(yù)設(shè)等待5秒,如果該后續(xù)操作中遇到控件超過(guò)5秒之后才出現(xiàn),會(huì)報(bào)Exception錯(cuò)誤。
implicitly_wait方法比 sleep更加智能,后者只能選擇一個(gè)固定的時(shí)間的等待,前者可以在一個(gè)時(shí)間范圍內(nèi)智能的等待。使用implicitly_wait的有缺點(diǎn):
優(yōu)點(diǎn):
- 開(kāi)發(fā)腳本成本低:只要在測(cè)試執(zhí)行開(kāi)始聲明一次 timeout時(shí)間,所有的腳本都可以起作用。
缺點(diǎn):
- 無(wú)法快速定位錯(cuò)誤:Implicit Wait 是由 selenium remote 端操控,而錯(cuò)誤訊息由 OS, 瀏覽器 與Selenium 的版本決定,這會(huì)導(dǎo)致使用 implicit wait 時(shí),結(jié)果可能無(wú)法預(yù)期。
- 在Web測(cè)試中僅限使用在find elements:Implicit Wait僅在find_element時(shí)檢查元素是否存在于DOM (Document Object Model) 中,若是要進(jìn)一步檢查元件的屬性是否 clickable, visible等,則無(wú)法完成。
- 無(wú)法為特定的控件對(duì)象定制化等待時(shí)間:由于timeout 時(shí)間統(tǒng)一都為n 秒,為了某些控件需要特別長(zhǎng)的等待時(shí)間,Implicit Wait 的timeout 可能因此被設(shè)定的很長(zhǎng)。
顯示等待:就是明確的要等到某個(gè)元素的出現(xiàn)或者是某個(gè)元素的可點(diǎn)擊等條件,等不到,就一直等,除非在規(guī)定的時(shí)間之內(nèi)都沒(méi)找到,那么就跳出Exception。
利用Selenium所提供的功能,對(duì)于特定的控件針對(duì)特定條件做等待。在設(shè)置時(shí)間內(nèi),默認(rèn)每隔一段時(shí)間檢測(cè)一次控件是否存在,如果超過(guò)設(shè)置時(shí)間檢測(cè)不到則拋出異常。
WebDriverWai一般由until或until_not方法配合使用,就能夠根據(jù)判斷條件而進(jìn)行靈活地等待了。
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import Bydriver = webdriver.Firefox() driver.implicitly_wait(10) # 隱性等待和顯性等待可以同時(shí)用,但要注意:等待的最長(zhǎng)時(shí)間取兩者之中的大者 driver.get('https://www.sina.com') locator = (By.LINK_TEXT, '微博')try:WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))print(driver.find_element_by_link_text('微博').get_attribute('href') ) finally:driver.close()上例中設(shè)置了隱性等待和顯性等待,在其他操作中,隱性等待起決定性作用,在WebDriverWait中顯性等待起主要作用,但要注意的是:最長(zhǎng)的等待時(shí)間取決于兩者之間的大者,此例中為20,如果隱性等待時(shí)間 > 顯性等待時(shí)間,則該句代碼的最長(zhǎng)等待時(shí)間等于隱性等待時(shí)間。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的android 图片浏览控件_Android自动化测试23--Appium同步点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python excel详解_pytho
- 下一篇: android studio 如何导入工