appium測試中驗證toast的正確性

2021-10-08 12:26:51 字數 4654 閱讀 9216

//*[@class=「class屬性值」]

//*[contain(@text,「text文字)」]

一、在原生中獲取toast文字

class

testtoast

:def

setup

(self)

: caps =

caps[

"platformname"]=

'android'

caps[

"devicename"]=

'192.168.111.101:5555'

caps=

'com.example.android.apis'

caps=

'.view.popupmenu1'

caps[

"automationname"]=

'uiautomator2'

caps[

"noreset"]=

'true'

caps=

'true'

caps[

"skipdeviceinitializati"]=

'true'

caps[

"unicodekeyboard"]=

'true'

caps[

"resetkeyboard"]=

'true'

self.driver = webdriver.remote(

"", caps)

self.driver.implicitly_wait(10)

defteardown

(self)

:# self.driver.back()

self.driver.quit(

)def

test_toast

(self)

:"""

1.開啟 api demos -> views -> popup menu

2.點選search

3.獲取toast

:return:

"""self.driver.find_element_by_xpath(

'//*[@text = "make a popup!"]'

).click(

) self.driver.find_element_by_id(

'android:id/title'

).click(

)print

(self.driver.page_source)

#複製列印資訊中toast的class屬性並列印值

#方法一

# print(self.driver.find_element(mobileby.xpath, "//*[@class='android.widget.toast']").text)

#方法二

print

(self.driver.find_element(mobileby.xpath,

"//*[contains(@text,'clicked popup')]"

).text)

二、在h5頁面中獲取toast

方法一,列印當前頁面原始碼,assert toast文字在原始碼中,即斷言正確。

比如雪球開戶,點選「a股開戶」—>輸入手機號和驗證碼—>點選「立即開戶」,若沒有點選獲取驗證碼而直接開戶就會toast提示「請獲取驗證碼」

程式碼:from selenium.webdriver.support import expected_conditions

from selenium.webdriver.support.wait import webdriverwait

class

testaw

:def

setup

(self)

: caps =

caps[

"platformname"]=

'android'

caps[

"devicename"]=

'192.168.111.101:5555'

caps[

"platformversion"]=

'6.0'

caps=

'com.xueqiu.android'

caps[

"automationname"]=

'uiautomator2'

caps=

'.common.mainactivity'

caps[

"noreset"]=

'true'

caps=

'true'

caps[

"skipdeviceinitializati"]=

'true'

caps[

"unicodekeyboard"]=

'true'

caps[

"resetkeyboard"]=

'true'

caps[

"chromedriverexecutable"]=

self.driver = webdriver.remote(

"", caps)

self.driver.implicitly_wait(10)

defteardown

(self)

:# self.driver.quit()

self.driver.back(

)def

test_xueqiu_aw

(self)

:"""

2.點選「交易」

3.點選「a股開戶」

4.在輸入使用者名稱和密碼

5.點選「立即開戶」

6.退出應用

:return:

"""# 2.點選「交易」

self.driver.find_element(mobileby.xpath,

'//*[@text="交易"]'

).click(

) a_locator =

(mobileby.xpath,

'//*[@class="trade_home_agu_3ki"]/div[2]/h1'

)# 獲取當前上下文

print

(self.driver.contexts)

self.driver.switch_to.context(self.driver.contexts[1]

) webdriverwait(self.driver ,10)

.until(expected_conditions.element_to_be_clickable(a_locator)

)# 3.點選「a股開戶」

self.driver.find_element(

*a_locator)

.click(

)print

(self.driver.window_handles)

# 獲取當前開啟的視窗

self.driver.switch_to.window(self.driver.window_handles[-1

])phonenumber_locator =

(mobileby.id,

'phone-number'

) webdriverwait(self.driver,60)

.until(expected_conditions.element_to_be_clickable(phonenumber_locator)

)# 4.在輸入使用者名稱和密碼,點選「立即開戶」

self.driver.find_element(

*phonenumber_locator)

.send_keys(

'18218813163'

) self.driver.find_element(mobileby.id,

'code'

).send_keys(

'123456'

) self.driver.find_element(mobileby.xpath,

'/html/body/div/div/div[2]/div/div[2]/h1'

).click(

)# 獲取toast文字

print

(self.driver.page_source)

assert "請獲取驗證碼」 in self.driver.page_source

方法二:只判斷toast可見,返回true。

這裡有個問題,就是不知道是操作失敗還是成功導致的toast,總之我用原生方法獲取不到文字資訊只能判斷它出現了,h5頁面獲取toast文字內容以後有空研究下吧。

# 獲取toast文字

while

true

: toast_text = self.driver.find_element(by.xpath,

'//*[text()="請先獲取驗證碼"]'

).is_displayed(

)if toast_text:

break

assert toast_text ==

true

Appium併發測試Capability配置

以下是啟動多個 android 會話的一些重要引數 u裝置 id chromedriver portchromedriver 埠 若是在使用 webviews 或 chrome selendroid portselendroid 埠 若是在使用 selendroid node p 4492 bp 2...

使用appium測試微博

1 確定測試工具 2 確定測試框架 3 編寫測試用例 4 編寫測試指令碼 5 除錯強化指令碼 這裡直接進入指令碼準備 這裡寫 片啟動微博 這裡寫 片markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的...

appium 測試使用的API

模擬操作類 元素定位類findelementbyxx driver.findelementbyid id id獲取方法 利用uiautomater截圖,獲取resource id driver.findelementbyclassname classname 通常通過這種方式獲取的view不止乙個,...