Selenium 可以控制浏览器执行想要的动作,如前进、后退、点击、刷新、输入文本等。
代码实例(当前 selenium 版本:3.9)
import time
from selenium import webdriver
# 浏览器对象
browser = webdriver.Chrome()
# 浏览器访问网站
browser.get('https://www.baidu.com')
# 定位输入框
input_kw = browser.find_element_by_id('kw')
time.sleep(2)
# 输入'王维家'
input_kw.send_keys('王维家')
time.sleep(2)
# 清除掉输入框的文本
input_kw.clear()
time.sleep(2)
# 重新输入
input_kw.send_keys('毛不易')
# 定位 “百度一下”,并点击,提交搜索,执行搜索操作
button = browser.find_element_by_id('su')
button.click()
# 用于提交表单,如搜索框内输入关键字之后的“回车”操作,也可以执行搜索操作
# input_kw.submit()
time.sleep(2)
# 滚动条拉到底部
js_bottom = "document.documentElement.scrollTop=100000"
browser.execute_script(js_bottom)
time.sleep(2)
# 定位“下一页”按钮标签,并点击
nextPage = browser.find_element_by_xpath('//a[@class="n"]')
nextPage.click()
time.sleep(2)
# 回到上一页面,后退操作
browser.back()
time.sleep(2)
# 使浏览器历史记录前进一步,前进操作
browser.forward()
time.sleep(2)
# 刷新浏览器当前页面
browser.refresh()
time.sleep(2)
# 关闭浏览器
browser.quit()
上面代码控制浏览器进行的操作:
注意:
click() 方法是Selenium WebDriver提供的操作鼠标的方法,其作用是单击已经定位到的节点。
.forward() 和 back() 方法表示浏览器前进和后退的功能
double_click(),其作用是双击已经定位到的节点。
程序运行中间执行了多次阻塞操作 time.sleep(2)
在使用Selenium的时候,可能会遇到一些异常,例如超时(TimeoutException)、节点未找到(NoSuchElementException)等。一旦出现此类异常,程序便会停止运行。为了让程序不停止运行我们可以使用 try except 语句来捕获各种异常,对异常进行处理。
模拟节点未找到异常
from selenium import webdriver
# 声明浏览器对象,并访问网站
browser = webdriver.Chrome()
url = "https://www.baidu.com"
browser.get(url)
# 查找节点
element1 = browser.find_element_by_link_text("大地图")
控制台提示的错误信息:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xC4PYbCO-1660556957741)(D:\学习笔记\笔记图片\Python\QQ截图20220815171437.png)]
使用 try except 语句来捕获异常
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
browser = webdriver.Chrome()
url = "https://www.baidu.com"
browser.get(url)
try:
element1 = browser.find_element_by_link_text("大地图")
except NoSuchElementException:
print("没有找到节点")
执行结果:使用 try except 语句来捕获异常后,程序就不会中断了。
没有找到节点