在打开网页定位元素的时候,在网络不好或者页面卡顿的情况下会导致元素定位失败,此时不建议使用sleep()强制等待。
首先正常导入模块
1 from selenium import webdriver 2 from selenium.webdriver.support.ui import webdriverwait 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.common.by import By 5 from time import sleep
上面的模块分别为:
webdriverwait:显示等待模块(必用)
expected_conditions:预期条件类(里面包含方法可以调用,用于等待显示)
By:用于定位元素
as的作用类似于定义一个变量,即把“expected_conditions”定义为“as”,后期代码书写便捷
1 driver=webdriver.Firefox() 2 3 driver.get("http://baidu.com") 4 sleep(2) 5 6 driver.find_element_by_css_selector("#kw").send_keys("Selenium")
正常打开百度网页
1 element=webdriverwait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'su')))
定义一个值,打开网页后等待五秒,每0.5秒请求一次,知道可以获取到ID='su'的这个元素
1 element.click()
点击按钮
全部代码如下
1 from selenium import webdriver 2 from selenium.webdriver.support.ui import webdriverwait 3 from selenium.webdriver.support import expected_conditions as EC 4 from selenium.webdriver.common.by import By 5 from time import sleep 6 7 8 driver=webdriver.Firefox() 9 10 driver.get("http://baidu.com") 11 sleep(2) 12 13 driver.find_element_by_css_selector("#kw").send_keys("Selenium") 14 15 element=webdriverwait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'su11'))) 16 17 element.click() 18 19 sleep(3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。