selenium没有exist_xxx相关的方法,无法直接判断元素存在。但是锁定元素时使用的browser.find_elements(By.CSS_SELECTOR,"css元素")会返回一个列表list,如果不存在这个元素就会返回一个空列表。因此我们曲线救国,比如:
if len(browser.find_elements(By.CSS_SELECTOR,"a.paging_next")) == 0: # 元素不存在的逻辑 pass else: # 元素存在的逻辑 pass 完整示例程序比如使用如下代码获取一个网页:
from selenium import webdriver from selenium.webdriver.common.by import By option = webdriver.ChromeOptions() option.add_argument('--disable-gpu') option.add_argument('lang=zh_CN.UTF-8') prefs = {"profile.managed_default_content_settings.images": 2, # 禁止加载图片 } option.add_experimental_option("prefs", prefs) browser = webdriver.Chrome(options=option) browser.get("https://www.baidu.com")得到百度的页面
此时如果随便索引一个,结果为0:
而如果索引下面那一部分,得到结果18:
print(len(browser.find_elements(By.CSS_SELECTOR,"div#s-top-left a")))索引网页内存在的内容,得到结果['新闻', 'hao123', '地图', '贴吧', '视频', '图片', '网盘', '更多', '', '', '', '', '', '', '', '', '', '']
print([_v.text for _v in browser.find_elements(By.CSS_SELECTOR,"div#s-top-left a")])