电竞比分网-中国电竞赛事及体育赛事平台

分享

Selenium2+python自動(dòng)化36-判斷元素存在

 上海悠悠 2021-05-27

前言

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

元素不存在的話,操作元素會(huì)報(bào)錯(cuò),或者元素有多個(gè),不唯一的時(shí)候也會(huì)報(bào)錯(cuò)。本篇介紹兩種判斷元素存在的方法。

一、find_elements方法判斷

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

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

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

二、百度輸入框?yàn)槔?/p>

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

2.判斷標(biāo)簽為input元素是否存在

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

三、捕獲異常方法

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

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

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

四、參考代碼

# 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個(gè)元素:%s"%(len(s),css)
        return False

# 判斷頁面上有無id為kw的元素
if is_element_exist("#kw"):
    driver.find_element_by_id("kw").send_keys("yoyoketang")
# 判斷頁面有無標(biāo)簽為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")

學(xué)習(xí)過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:232607095

appium交流QQ群:512200893

可以在pc上收藏我的博客地址:http://www.cnblogs.com/yoyoketang/地址很好記哦,前面是cnblogs地址,后面是yoyoketang,收藏這個(gè)地址,你懂得!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多