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

來源:互聯網
上載者:User

標籤:技巧   bdr   pytho   pat   select   als   sele   rom   好用   

前言

最近有很多小夥伴在問如何判斷一個元素是否存在,這個方法在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")

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.