appium判断元素是否存在_Python+selenium自动化之判定元素是否存在
在測試過程中,我碰到過這類的問題,使用find_element卻找不到某個元素而產生異常,這就需要在操作某個元素之前判定該元素是否存在,而selenium中沒有判定元素是否存在的方法,或者判定相同的元素有幾個,需要操作對象是第幾個。但是,有人已經總結一些相關的方式方法,下面還是通過實例說明。
find_elements獲取元素個數
如果確定查找的元素在網頁中只有一個,那么完全可以用find_element(),但如果有多個滿足要求的節點,用find_element()就只能得到第一個節點了,所以查找多個節點時,應該使用find_elements()更好。即使元素只有唯一的一個時,由于網絡時延或者彈窗前后臺切換導致操作該元素時,該元素不存在,就可以使用find_elements來判定元素個數是否不為零,再進行相關操作。Selenium中find_elements的方法如下,但是注意復數形式,別亂用。
Find_elements的方法很多,如果常用判定最好自己寫一個函數,方便調用,通常選擇CSS或xpath。返回0則頁面沒有這個元素,返回1則僅有1個元素,其它返回則說明有多個該元素。
還是以企業郵箱為例,企業郵箱默認使用二維碼方式登錄,但是想要使用賬戶密碼登錄,就需要判定“賬戶密碼登錄”元素是否存在,我們可以使用 Ranorex Selocity直接復制該元素的xpath。
但是這類有一個確定,就是當頁面存在多個同樣的元素時,也是返回true,可能需要操作的并不是第一個。
捕獲異常
捕獲異常是使用find_element方法無法獲取元素則會拋出異常,如果找到元素則會返回True。
# -*- coding: UTF-8 -*-from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(20)
# 打開騰訊企業郵箱
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()
總結
以上是生活随笔為你收集整理的appium判断元素是否存在_Python+selenium自动化之判定元素是否存在的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 重启网卡_CentOS6
- 下一篇: 《赠故人马子乔诗》第九句是什么