appium判断元素是否存在_Python+selenium自动化之判定元素是否存在
在測(cè)試過程中,我碰到過這類的問題,使用find_element卻找不到某個(gè)元素而產(chǎn)生異常,這就需要在操作某個(gè)元素之前判定該元素是否存在,而selenium中沒有判定元素是否存在的方法,或者判定相同的元素有幾個(gè),需要操作對(duì)象是第幾個(gè)。但是,有人已經(jīng)總結(jié)一些相關(guān)的方式方法,下面還是通過實(shí)例說明。
find_elements獲取元素個(gè)數(shù)
如果確定查找的元素在網(wǎng)頁中只有一個(gè),那么完全可以用find_element(),但如果有多個(gè)滿足要求的節(jié)點(diǎn),用find_element()就只能得到第一個(gè)節(jié)點(diǎn)了,所以查找多個(gè)節(jié)點(diǎn)時(shí),應(yīng)該使用find_elements()更好。即使元素只有唯一的一個(gè)時(shí),由于網(wǎng)絡(luò)時(shí)延或者彈窗前后臺(tái)切換導(dǎo)致操作該元素時(shí),該元素不存在,就可以使用find_elements來判定元素個(gè)數(shù)是否不為零,再進(jìn)行相關(guān)操作。Selenium中find_elements的方法如下,但是注意復(fù)數(shù)形式,別亂用。
Find_elements的方法很多,如果常用判定最好自己寫一個(gè)函數(shù),方便調(diào)用,通常選擇CSS或xpath。返回0則頁面沒有這個(gè)元素,返回1則僅有1個(gè)元素,其它返回則說明有多個(gè)該元素。
還是以企業(yè)郵箱為例,企業(yè)郵箱默認(rèn)使用二維碼方式登錄,但是想要使用賬戶密碼登錄,就需要判定“賬戶密碼登錄”元素是否存在,我們可以使用 Ranorex Selocity直接復(fù)制該元素的xpath。
但是這類有一個(gè)確定,就是當(dāng)頁面存在多個(gè)同樣的元素時(shí),也是返回true,可能需要操作的并不是第一個(gè)。
捕獲異常
捕獲異常是使用find_element方法無法獲取元素則會(huì)拋出異常,如果找到元素則會(huì)返回True。
# -*- coding: UTF-8 -*-from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(20)
# 打開騰訊企業(yè)郵箱
driver.get("https://exmail.qq.com/login")
#判定元素是否存在def test_elements_judge(xpath):
test_element = driver.find_elements_by_xpath(xpath)
if len(test_element) == 1:
return True
else:
return False
#捕獲異常
def test_exceptions(xpath):
try:
driver.find_element_by_xpath(xpath)
return True
except:
return False
if test_exceptions("//form[@id='loginForm']"
"/div[3]/div[@class='login_scan_footer']/a[1]"):
driver.find_element_by_xpath("//form[@id='loginForm']" "/div[3]/div[@class='"
"login_scan_footer']/a[1]").click()
總結(jié)
以上是生活随笔為你收集整理的appium判断元素是否存在_Python+selenium自动化之判定元素是否存在的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 重启网卡_CentOS6
- 下一篇: python闭包的应用场景_简单谈谈Py