携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情
1、控制浏览器
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)
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("大地图")
控制台提示的错误信息:
使用 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 语句来捕获异常后,程序就不会中断了。
没有找到节点