selenium之显示等待(等到某个元素出现后再继续执行)

本文章还请认真仔细阅读,非常简单,阅读前,你可能已经掌握,xpath

我们在爬虫的时候,总会利用time.sleep(),去等待元素的出现,但是这很容易出错,因为你不知道你的网速有多卡,从而导致频繁报错

我相信我的注释已经很 【言简意赅】了,你一定可以看得懂

我用了一个很简单的例子,百度一下

我喜欢直接上代码

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wd = webdriver.Chrome()
wd.get('http://www.baidu.com')

# wd是webdriver对象,10是最长等待时间,0.5是每0.5秒去查询对应的元素。until后面跟的等待具体条件,EC是判断条件,检查元素是否存在于页面的 DOM 上。
# 这行可以理解为 每0.5s连接到百度的首页看看,有没有出来
login_btn = WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.ID, "s-top-loginbtn")))

# 再举个例子 比如网速慢, 【百度一下】 左边的输入框没出来,那我们就设置,如果出现就输入 查找的关键字
WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.XPATH, "//input[@id='kw']")))
input_ = wd.find_element_by_xpath("//input[@id='kw']")
time.sleep(0.1)
input_.send_keys("python")

# 再举个例子 比如网速慢, 【百度一下】 这四个字没出来(按钮),那我们就设置,如果出现就输入 查找的关键字,然后点击
WebDriverWait(wd, 10, 0.5).until(EC.presence_of_element_located((By.XPATH, "//input[@id='su']")))
baiduyixia = wd.find_element_by_xpath("//input[@id='su']")
time.sleep(0.1)
baiduyixia.click()

time.sleep(2)
wd.close()

参考链接:https://blog.csdn.net/qq_44728587/article/details/122997412

致力于办公自动化的小小程序员一枚

都看到这了,关注+点赞+收藏=不迷路!!

你可能感兴趣的:(selenium,Python自动化办公,爬虫,selenium,python,测试工具)