Selenium2+python自動化36-判斷元素存在


前言

最近有很多小伙伴在問如何判斷一個元素是否存在,這個方法在selenium里面是沒有的,需要自己寫咯。

元素不存在的話,操作元素會報錯,或者元素有多個,不唯一的時候也會報錯。本篇介紹兩種判斷元素存在的方法。

一、find_elements方法判斷

1.find_elements方法是查找頁面上所有相同屬性的方法,這個方法其實非常好用,能熟練掌握技巧的不多,小編這次就發揮它的功效

2.由於元素定位的方法很多,所以判斷的時候定位方法不統一也比較麻煩,這里我選擇css定位(有喜歡xpath的同學可以自己用xpath語法)

3.寫一個函數判斷,找到就返回Ture,沒找到就返回False(或者不止一個)

二、百度輸入框為例

1.判斷id為kw的元素是否存在

2.判斷標簽為input元素是否存在

3.判斷id為xxx元素是否存在

三、捕獲異常方法

1.如果沒找到元素會拋異常,返回False

2.如果找到元素就返回Ture

3.但是這個方法有個弊端,如果頁面上存在多個一樣元素,也會返回Ture的(也就是說只要頁面上有元素就返回Ture,不管幾個)

四、參考代碼

# coding:utf-8
from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
def is_element_exist(css):
    s = driver.find_elements_by_css_selector(css_selector=css)
    if len(s) == 0:
        print "元素未找到:%s"%css
        return False
    elif len(s) == 1:
        return True
    else:
        print "找到%s個元素:%s"%(len(s),css)
        return False

# 判斷頁面上有無id為kw的元素
if is_element_exist("#kw"):
    driver.find_element_by_id("kw").send_keys("yoyoketang")
# 判斷頁面有無標簽為input元素
if is_element_exist("input"):
    driver.find_element_by_tag_name("input").send_keys("yoyoketang")
# 判斷頁面有無id為xxx的元素
if is_element_exist("xxx"):
    driver.find_element_by_id("xxx").send_keys("yoyoketang")

def isElementExist(css):
    try:
        driver.find_element_by_css_selector(css)
        return True
    except:
        return False

print isElementExist("#xxx")
學習過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:646645429

selenium+python高級教程》已出書:selenium webdriver基於Python源碼案例

(購買此書送對應PDF版本)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM