Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。
Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。
Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS 的工具代替真实的浏览器。
目前,selenium不再支持phantomjs,虽然还可以用,但还是推荐使用firefox或chrome的无头浏览器配合selenium。
学习环境
python3.6+selenium+firefox
selenium要使用firefox或谷歌浏览器需要使用geckodriver的驱动,贴上百度网盘下载
链接: https://pan.baidu.com/s/1FbaBzz3llsP56tdxT0Ye9Q 提取码: t4w7
下载解压后在环境变量path中添加geckdriver的安装路径
基本使用
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Firefox() # 通过web驱动声明浏览器对象
try: # 捕捉异常
browser.get('https://www.baidu.com') # 请求的url
inputs = browser.find_element_by_id('kw') # kw是百度的搜索框的id
inputs.send_keys('Python') # 向上面得到的输入框对象发送字符串Python
inputs.send_keys(Keys.ENTER) # 发送回车键
wait = WebDriverWait(browser, 10) # 让驱动等待
wait.until(EC.presence_of_element_located((By.ID, 'content_left'))) # 驱动在上一句设置的10秒内默认每0.5秒调用 一次括号中的方法。
# 输出url,cookie,和页面源代码
print(browser.current_url)
print(browser.get_cookies())
print(browser.page_source)
finally: # 关闭驱动
browser.close()
声明浏览器对象
from selenium import webdriver
# 环境变量设置好geckdriver的路径之后,可以如下声明各浏览器对象,否则就需要在方法内添加executable_path参数,值为geckdriver的安装目录
browser = webdriver.Chrome()
browser &#