selenium+python處於學習階段,功能實現之后開始整理之前寫的代碼,突然發現一個功能沒有做判斷,比如,點擊“請登錄”,需要判斷一下這個彈出框到底彈了沒有,這樣就需要判斷某個元素是否存在,使用is_displayed函數只能用於該元素存在去判斷此元素是否出現,而不能判斷某個元素是否存在,所以就自己寫了個方法。
一、find_elements方法判斷
1.find_elements方法是查找頁面上所有相同屬性的方法;
2.寫一個函數判斷,找到就返回Ture,沒找到就返回False(或者不止一個)。

二、捕獲異常
1.如果沒找到元素會拋異常,返回False;
2.如果找到元素就返回Ture;
3.但是這個方法有個弊端,如果頁面上存在多個一樣元素,也會返回Ture的。

三、參考代碼
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : chen # @File : isTure.py # @Software: PyCharm from selenium import webdriver import time url = 'https://www.baidu.com' browser = webdriver.Firefox() browser.get(url) browser.implicitly_wait(30) # 創建一個判斷函數 def is_element_exist(id): flag = browser.find_elements_by_id('kw') if len(flag) == 0: print( "元素未找到:%s"% id) return False elif len(flag) == 1: return True else: print("找到%s個元素:%s"%(len(flag),id)) # 判斷頁面上有無id為kw的元素 if is_element_exist("#kw"): browser.find_element_by_id("kw").send_keys("yoyoketang") # 判斷頁面有無標簽為input元素 if is_element_exist("input"): browser.find_element_by_tag_name("input").send_keys("yoyoketang") # 判斷頁面有無id為xxx的元素 if is_element_exist("xxx"): browser.find_element_by_id("xxx").send_keys("yoyoketang") def isElementExist(self,element): flag = True driver = self.driver try: driver.find_element_by_xpath(element) return flag except: flag = False return flag
寫在最后的話:這些都是小編自己一個字一個字敲上去的,原創算不上,可能很多類似的資料,小編寫這個的目的是為了激勵自己在學習道路上養成良好的習慣,所以轉載請注明出處,謝謝!
