QQ測(cè)試項(xiàng)目之一

開(kāi)篇閑扯

生活就像一把吉他戒突,彈不響也要彈,bug就像測(cè)試的頭發(fā)唁奢,又濃又密!

生活中的瘋子宣布:“QQ測(cè)試項(xiàng)目正式開(kāi)始”

小白新秀

一件作品的開(kāi)始總是丑陋的
實(shí)現(xiàn)涣狗,QQ應(yīng)用底部導(dǎo)航控件之間的點(diǎn)擊跳轉(zhuǎn)
定位元素文件內(nèi)容

nav:
 - android:id/tabs
 - android.widget.RelativeLayout
 - android.widget.FrameLayout

python 測(cè)試腳本代碼

from appium import webdriver
from time import sleep
import yaml


def read_yaml():
    with open('duntil.yaml', 'r') as fb:
        return yaml.load(fb)


el = read_yaml()['nav']


class TestKe(object):
    def __init__(self):
        self.d = {
            "device": "android",
            "platformName": "Android",
            "platformVersion": "9",
            "deviceName": "46HDU19314003325",
            "appPackage": "com.tencent.mobileqq",
            "appActivity": ".activity.SplashActivity",
            "noReset": "true"
        }
        self.dr = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities=self.d)
        sleep(10)

    def change_nav(self):
        a = self.dr.find_element_by_id(el[0]).find_elements_by_class_name(el[2])
        for i in a:
            i.click()
        print(a)

    def close(self):
        self.dr.quit()

if __name__ == '__main__':
    t = TestKe()
    t.change_nav()
    t.close()

舊事重提

昨天的問(wèn)題回答一下
為什么要加入睡眠時(shí)間?
appium自動(dòng)化測(cè)試吹截,核心之一是根據(jù)xml元素執(zhí)行模仿人的操作捧搞,xml文件的加載速度快于手機(jī)渲染UI布局頁(yè)面的速度筑累,雖然已經(jīng)在xml文件中找到定位元素果复,但是UI布局中該元素沒(méi)有被顯示材诽,那么該屬性的狀態(tài)依舊是不可見(jiàn)的狀態(tài)颤枪,所以很多做過(guò)自動(dòng)化測(cè)試的小伙伴經(jīng)常會(huì)遇到一個(gè)問(wèn)題汗捡,“xx元素找不到”,所以我們要在必要的代碼中加入等待時(shí)間

appium的三種等待方式

第一種:強(qiáng)制等待 --- time.sleep(浮點(diǎn)數(shù))
強(qiáng)制cup的線程停止xx秒,從而使元素在UI布局中加載出來(lái)

from time import sleep
sleep(2.5)

第二種:隱性等待 --- implicitly_wait()
設(shè)置最大等待時(shí)間畏纲,關(guān)鍵字參數(shù):time_to_wait=10扇住,超過(guò)最大等待時(shí)間后則會(huì)拋出異常

self.dr.implicitly_wait(time_to_wait=10)

第三種:安卓獨(dú)有 --- wait_activity():
在設(shè)置的時(shí)間內(nèi)沒(méi)間隔指定的時(shí)間掃描activity是否被找到,找到則執(zhí)行下面的代碼盗胀,超過(guò)最大等待時(shí)間則拋出異常
activity: 安卓活動(dòng)名艘蹋,tiemout:超時(shí)時(shí)間

self.dr.wait_activity(activity=".activity.SplashActivity'', timeout=10)

第四種:智能等待 --- WebDriverWait():在指定的時(shí)間內(nèi),默認(rèn)每隔一段時(shí)間檢測(cè)一次當(dāng)前頁(yè)面元素是否存在票灰,如果超過(guò)設(shè)置時(shí)間檢測(cè)不到則拋出異常女阀。
參數(shù)信息: driver:指的是webdriver.Remote()對(duì)象 timeout: 最長(zhǎng)超時(shí)時(shí)間,默認(rèn)以秒為單位 poll_frequency:間隔時(shí)間屑迂,默認(rèn)為 0.5 秒 ignored_exceptions - 超時(shí)后拋出的異常

from selenium import webdriver
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 By
locator = (By.ID, "android:id/tabs")
try:
    WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((locator))
except:
   print("元素未找到")
  # 后期這里可以完善為日志
"""
selenium.webdriver.support.expected_conditions 類還包含以下方法

這兩個(gè)條件類驗(yàn)證title浸策,驗(yàn)證傳入的參數(shù)title是否等于或包含于driver.title
title_is 
title_contains

presence_of_element_located # 判斷單一元素是否全部加載出來(lái)
presence_of_all_elements_located # 判斷多個(gè)元素全部加載出來(lái)

驗(yàn)證元素是否可見(jiàn),前兩個(gè)傳入?yún)?shù)是元組類型的locator屈糊,第三個(gè)傳入WebElement
第一個(gè)和第三個(gè)其實(shí)質(zhì)是一樣的
visibility_of_element_located
invisibility_of_element_located
visibility_of

判斷某段文本是否出現(xiàn)在某元素中的榛,一個(gè)判斷元素的text,一個(gè)判斷元素的value
text_to_be_present_in_element
text_to_be_present_in_element_value

frame_to_be_available_and_switch_to_it  # 判斷frame是否可切入

alert_is_present  # 判斷是否有alert出現(xiàn) alert彈出框

element_to_be_clickable # 這個(gè)條件判斷元素是否可點(diǎn)擊

這四個(gè)條件判斷元素是否被選中逻锐,第一個(gè)條件傳入WebElement對(duì)象夫晌,第二個(gè)傳入locator元組
第三個(gè)傳入WebElement對(duì)象以及狀態(tài)雕薪,相等返回True,否則返回False
第四個(gè)傳入locator以及狀態(tài)晓淀,相等返回True所袁,否則返回False
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be

判斷一個(gè)元素是否仍在DOM中,傳入WebElement對(duì)象凶掰,可以判斷頁(yè)面是否刷新了
staleness_of
"""

最后一講

獲取控件中的值

控件值獲取.png

首先你找到的元素中text屬性必須有值, 然后按照前幾篇將的定位方法進(jìn)行元素定位燥爷,再編寫腳本

    def get_text(self):
        b = self.dr.find_element_by_id('android:id/tabs').find_elements_by_class_name('android.widget.TextView')
        for i in b:
            print(i.text)
# 輸出結(jié)果是 消息 聯(lián)系人 看點(diǎn) 動(dòng)態(tài),一般這些東西用于斷言

明天聊

斷言
pytest
如何設(shè)計(jì)測(cè)試用例腳本

小記后語(yǔ)

愿明天的日出不像路燈那么昏黃懦窘,愿每個(gè)測(cè)試都能善待開(kāi)發(fā)的頭發(fā)前翎!阿門

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市畅涂,隨后出現(xiàn)的幾起案子港华,更是在濱河造成了極大的恐慌,老刑警劉巖午衰,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件立宜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡臊岸,警方通過(guò)查閱死者的電腦和手機(jī)橙数,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)帅戒,“玉大人灯帮,你說(shuō)我怎么就攤上這事≈├剑” “怎么了施流?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵响疚,是天一觀的道長(zhǎng)鄙信。 經(jīng)常有香客問(wèn)我,道長(zhǎng)忿晕,這世上最難降的妖魔是什么装诡? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮践盼,結(jié)果婚禮上鸦采,老公的妹妹穿的比我還像新娘。我一直安慰自己咕幻,他們只是感情好渔伯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肄程,像睡著了一般锣吼。 火紅的嫁衣襯著肌膚如雪选浑。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天玄叠,我揣著相機(jī)與錄音古徒,去河邊找鬼。 笑死读恃,一個(gè)胖子當(dāng)著我的面吹牛隧膘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寺惫,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疹吃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了西雀?” 一聲冷哼從身側(cè)響起互墓,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒋搜,沒(méi)想到半個(gè)月后篡撵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豆挽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年育谬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帮哈。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡膛檀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娘侍,到底是詐尸還是另有隱情咖刃,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布憾筏,位于F島的核電站嚎杨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏氧腰。R本人自食惡果不足惜枫浙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望古拴。 院中可真熱鬧箩帚,春花似錦、人聲如沸黄痪。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桅打。三九已至是嗜,卻和暖如春轻纪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叠纷。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工刻帚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涩嚣。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓崇众,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親航厚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顷歌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容