中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

發布時間:2020-08-07 17:38:04 來源:ITPUB博客 閱讀:324 作者:博為峰網校 欄目:網絡管理

下面以 MSN news 為例,實現啟動APP后跳轉到首頁的功能,包含使用list進行元素定位、try except else 進行是否首次啟動APP判斷,logging 進行日志記錄等功能。

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

一、場景:

1.啟動APP后連續跳過welcom、interest 、what’s new頁面到首頁

2.判斷是否是首次啟動,如果首次啟動通過出現welcom頁面,如果不是首次啟動則直接進入interest頁面

3.使用logging模塊記錄日志

Gif圖片文件:

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

二、實踐

2.1、啟動APP后連續跳過welcom、interest 、what’s new頁面到首頁

welcom頁面

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

1.首先啟動Appium進行session回話

2.APP啟動到welcom頁面,點擊not now按鈕,跳轉到下一個頁面

分析:這里我使用list元素進行定位,通過觀察可以知道class name 和sign in name名稱相同,如果直接使用classname那么就會定會到當前頁面首個class name元素,導致定位失敗。

list定位獲取一組class名稱,通過數組下標進行區分

a=driver.find_element_by_id()

  a[1].click()

3.代碼:

skipwel=driver.find_elements_by_class_name('android.widget.Button')

  skipwel[1].click()

2.2、判斷是否是首次啟動,如果首次啟動通過出現welcom頁面,如果不是首次啟動則直接進入interest頁面

首次啟動app時,會彈出welcome頁面,但是第二次啟動時該頁面就會消失,出現interest頁面那么對于這種判斷我們該如何處理呢

這里我們使用try except 語句進行判斷

try except 語法:

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

工作原理:

如果try語句發生異常,則執行except 匹配名稱后語句

如果try語句未發生異常,執行else后面語句

如果try語句發生異常,except語句后內容沒有匹配成功,異常將被遞交到上層的try

處理思路:

定位interest頁面,如果定位失敗,證明出現的是welcome,執行welcome語句;否則執行interest頁面語句

代碼:

def welcome():

  logging.info('skip welcome')

  skipwel=driver.find_elements_by_class_name('android.widget.Button')

  skipwel[1].click()

try:

  driver.find_elements_by_class_name('android.widget.Button')

  except NoSuchElementException:

  welcome()

  else:

  skipinterest=driver.find_elements_by_class_name('android.widget.Button')

  skipinterest[0].click()

interets 頁面

原理同welcom 頁面

skipinterest=driver.find_elements_by_class_name('android.widget.Button')

  skipinterest[0].click()

  what‘s new page

原理同welcom 頁面

skipwhatnew=driver.find_elements_by_class_name('android.widget.Button')

  skipwhatnew[1].click()

2.3、使用logging 模塊記錄日志

日志是用來幫我們定位問題,通過日志可以更準準確的確定問題所在,我們可以設定日志級別、日志的輸出格式等

場景:

在啟動APP時,輸出start app 日志

導航頁跳轉到首頁過程,輸出執行的頁面為interest 頁面還是welcome 頁面

2.3.1、單個py文件日志

在單個py文件里日志輸出形式如下:

1.日志流程

首先,導入日志模塊

然后,basicconfig 方法創建記錄器,為記錄做基本配置。

日志級別:level

日志輸出路徑:Filename

日志輸出格式:Format

最后,在需要添加日志的地方輸出日志即可,logging.info(’start app‘)

  1. 代碼實現

import logging

  logging.basicConfig(level=logging.INFO,filename='456.log',  format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')

  #判斷是否首次啟動App,跳過導航頁到首頁

  def welcome():

  logging.info('skip welcome')

  skipwel=driver.find_elements_by_class_name('android.widget.Button')

  skipwel[1].click()

  try:

  driver.find_elements_by_class_name('android.widget.Button')

  except NoSuchElementException:

  logging.info('run welcome')

  welcome()

  else:

  logging.info('run interest')

  skipinterest=driver.find_elements_by_class_name('android.widget.Button')

  skipinterest[0].click()

3.運行

在代碼中456.log中查看日志輸出信息

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

2.3.2 日志模塊

上面講述的是單個功能日志的流程,整個APP測試下來有很多功能都需要用到日志,如果每個功能都重復編寫,會造成代碼冗余

所以,下面我們把日志的配置參數抽離出來,需要時直接調用即可

1.首先建立log.conf文件,存儲配置參數等信息

log.conf文件代碼:

[loggers]

  keys=root,infoLogger

  [logger_root]

  level=DEBUG

  handlers=consoleHander,fileHandler

  [logger_infoLogger]

  handlers=consoleHander,fileHandler

  qualname=infoLogger

  propagat=0

  [handlers]

  keys=consoleHander,fileHandler

  [handler_consoleHander]

  class=StreamHandler

  level=INFO

  formatter=form02

  args=(sys.stdout,)

  [handler_fileHandler]

  class=FileHandler

  level=INFO

  formatter=form01

  args=('456.log','a')

  [formatters]

  keys=form01,form02

2.在需要引用log的py文件中引用log.conf文件

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

將上文中如下代碼刪除

logging.basicConfig(level=logging.INFO,filename='456.log',

 format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s%(message)s')

更換為:

CON_LOG='log.conf'

  logging.config.fileConfig(CON_LOG)

  logging=logging.getLogger()

三、報錯提示

總結運行過程中報錯提示及解決方法

1.Eclipse運行 啟動app 代碼,提示launching new configuration

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

Eclipse

解決方法:

  Project -> Properties -> Run/Debug Settings:

  1. select "Launching New_configuration5"

  2. Delete

2.ImportError: cannot import name 'webdriver'

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

解決方法:

from selenium import webdriver

3.TypeError: 'WebElement' object does not support indexing

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

解決:把find_element 改為find_elements?

4.IndexError: list index out of range

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

解決:

有可能是數組越界,里面數值從0開始標記

再有可能list是一個空的,沒有一個元素

進行list[0]就會出現該錯誤

5.module 'logging' has no attribute 'basicConfig'

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

解決:

自己就命名了一個logging.py的文件,在代碼中import的是自己新建的這個,找不到basicConfig,文件名改成logging_test.py后,正常運行。

6.int' object is not callable

案例分享,Appium+Python實現APP啟動頁跳轉到首頁

解決:發現代碼中寫的是logging.DEBUG,應該為logging.debug()

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭县| 府谷县| 丹棱县| 光泽县| 旺苍县| 德格县| 班玛县| 巩留县| 资源县| 高淳县| 乌兰县| 嘉禾县| 景东| 英德市| 如东县| 育儿| 新余市| 阜康市| 马鞍山市| 黄龙县| 石城县| 赣州市| 美姑县| 怀仁县| 佳木斯市| 湘乡市| 开封县| 威远县| 邵阳市| 孟州市| 闽侯县| 宣化县| 河东区| 兰州市| 农安县| 克东县| 阿拉善左旗| 桂林市| 六安市| 广宗县| 湛江市|