使用場景:
在自動化測試過程中,難免會用到反判斷,包括異常情況的處理,比如:find_element_by_name('測試') 判斷“測試”是否存在,存在則點擊,不存在則執行其他條件。先看底層方法,之后將舉例說明被封裝方法的具體使用。
find_element(By.ID,value)
find_element(By.NAME,value)
find_element(By.TAG_NAME,value)
find_element(By.CLASS_NAME,value)
以上方法均可使用,具體可根據實際需要在我封裝的find_Element中繼續添加
底層方法介紹:
python安裝目錄\site-packages\selenium\webdriver\remote\webdriver.py中查找def find_element方法。如下:
def find_element(self, by=By.ID, value=None): """ 'Private' method used by the find_element_by_* methods. :Usage: Use the corresponding find_element_by_* instead of this. :rtype: WebElement """ if self.w3c: if by == By.ID: by = By.CSS_SELECTOR value = '[id="%s"]' % value elif by == By.TAG_NAME: by = By.CSS_SELECTOR elif by == By.CLASS_NAME: by = By.CSS_SELECTOR value = ".%s" % value elif by == By.NAME: by = By.CSS_SELECTOR value = '[name="%s"]' % value return self.execute(Command.FIND_ELEMENT, { 'using': by, 'value': value})['value']
方法的封裝:
def find_Element(self,type,value): ''' method explain:查找某個元素 parameter explain: 【type】 取值的類型包括:id\name\class_name... 【value】根據type的類型給值 Usage: device.find_Element('name',"我的認證") ''' logging.info("執行--------find_Element-------方法") try: if type == 'id': try: return self.driver.find_element(By.ID,value) #查找ID元素,存在則直接返回 except Exception,e: #appium存在元素則直接返回,不存在則跑出異常,因此必須用異常來處理不存在元素的情況 logging.info("未找到%type--%value"%(type,value)) return False #查找ID元素,不存在則返回False elif type == 'name': try: return self.driver.find_element(By.NAME,value) except Exception,e: logging.info("未找到%type--%value"%(type,value)) return False except: logging.warn("此處已拋異常---------------find_Element") self.take_screenShot("find_Element")
'''
take_screenShot()自己封裝的截圖方法,如果你沒封裝就可以刪除掉此句話,或者看鏈接將此方法添加到你封裝py文
件中:http://www.cnblogs.com/syw20170419/p/8280017.html
''' assert 'find_Element' def click(self): ''' method explain:查找某個元素 parameter explain: 【type】 取值的類型 【value】根據type的類型給值 Undertake method:device.find_Element(type,value) Usage: name_value == device.find_Element(type = 'name',value="我的認證") name_value.click() ''' self.find_Element(type,self.value).click()
舉例說明被封裝方法的使用:
測試步驟:打開短信,點擊“新建”創建一條短信並發送
具體的封裝方法在測試中調用如下:
def creat_Message(self): logging.info("start creat message") '''創建短信''' sleep(5) new = self.device.find_Element(type = 'name',value="新建") #調用封裝的find_Element方法
if new: #判斷新建存在,則執行點擊
new.click() elif new == False: #判斷新建不存在,則打印log logging.error( '新建不存在')