开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第24天,点击查看活动详情
前言
在618、双11众多秒杀活动中,自动化操作可以说是做出了重大贡献。本次学习的selenium也是自动化操作的一种。
准备工作
在学习自动化操作浏览器之前,我们需要下载对应的驱动,假如我们是自动化操作谷歌浏览器,那我们就需要下载对应谷歌版本的chromedriver.exe,需要把chromedriver.exe放入谷歌浏览器的/Application文件夹下,以及python的执行文件夹下,还需要复制chromedriver.exe文件的路径并加入到电脑的环境变量中去。
基本操作
可以自动打开对应的浏览器,访问网址
from selenium import webdriver
# 创建浏览器操作对象
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
content = browser.page_source
print(content)
元素定位
元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先 要找到它们,WebDriver提供很多定位元素的方法。
方法:
1.find_element(By.ID, "id")
button = driver.find_element(By.ID, "su")------查找id为‘su’的元素
2. find_element(By.CLASS_NAME, "class")
eg:name = driver.find_element(By.CLASS_NAME, "ca")------查找class为’ca‘的元素
3. find_element(By.XPATH, "xpath")
eg:xpath1 = driver.find_element(By.CLASS_NAME, '//input[@id="su"]')------根据xpath路径查找
4.find_element(By.TAG_NAME, "tag")
eg:names = driver.find_element(By.TAG_NAME, "inout")------查找input的元素
5.find_element(By.CSS_SELECTOR, "")------根据css样式查找
eg:myinput = browser.find_element(By.CSS_SELECTOR, "#kw")
6.find_element(By.LINK_TEXT, "亲,请登录")
eg:browser.find_element(By.LINK_TEXT, "亲,请登录")-----查找文本为‘亲,请登录’的超链接
访问元素信息
获取元素属性
.get_ attribute('class')
获取元素文本
. text
获取标签名
.tag_ name
交互操作
点击:click()
输入:send_ keys()
后退操作: browser . back()
前进操作: browser . forword()
模拟JS滚动:
js= ' document . documentE lement. scrollTop= 100000'
browser . execute_ script(js) //执行js代码
获取网页代码: page_ source
退出: browser . quit()
各种交互案例:
from selenium import webdriver
# 创建浏览器操作对象
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
# 睡眠2秒
import time
time.sleep(2)
input = browser.find_element_by_id('kw')
# 输入
input.send_keys('1')
# 点击
button = browser.find_element_by_id('su')
button.click()
time.sleep(2)
# 滑动
hua = 'document.documentElement.scrollTop=1000000'
browser.execute_script(hua)
time.sleep(2)
next = browser.find_element_by_class_name('n')
next.click()
time.sleep(2)
# 回到上一页
browser.back()
time.sleep(2)
# 下一页
browser.forward()
time.sleep(2)
# 退出
browser.quit()
Chrome-headless
Chrome-headless模式,Google 针对Chrome浏览器59版新增加的一种模式,可以让你不打开Ul界面的情况 下使用Chrome浏览器,所以运行效果与Chrome保持完美一致。
1.系统要求:
Chrome
Unix\Linux系统需要chrome >= 59
Windows系统需要chrome >= 60
Python3.6
Selenium==3.4. *
ChromeDriver--2.31
案例:
from selenium import webdriver
from selenium. webdriver .chrome. options import Options
def share_browser():
chrome_options = Options()
chrome_options.add_argument(' --headless ')
chrome_options.add_argument(' --disable-gpu')
# path是你自己的chrome浏览器的文件路径
path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
chrome_options.binary_location = path
browser = webdriver.Chrome(chrome_options=chrome_options)
return browser
if __name__ == '__main__':
browser = share_browser()
url = 'https://baidu.com'
browser.get(url)
browser.save_screenshot('baidu.png')