Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏等。我们可以使用selenium很容易完成之前编写的爬虫,接下来我们就来看一下selenium的运行效果
一.安装环境
python+selenium+chrome
(1)python建议用python3及以上的版本
(2)selenium库这边我们使用pip接口进行安装
pip install selenium
pip接口详细说明可以看:
(3)这边推荐使用chrome浏览器,使用chrome浏览器则需要对应的驱动,下载链接如下:
http://chromedriver.storage.googleapis.com/index.html
找到与浏览器相对应的版本,32位即可驱动。
二.selenium库基础函数使用
1.webdriver.Chrome()
from selenium import webdriver
####实例化浏览器
driver = webdriver.Chrome()
输出如下:
2.driver.get() 函数打开网页包含协议头
driver.get('https://www.baidu.com/')
3.driver.maximize_window() 函数实现最大化浏览器
4.driver.back() 函数实现后退操作
5.driver.forward() 函数实现前进操作
6.driver.refrensh() 函数实现刷新页面功能
7.driver.close() 函数实现关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
8.driver.quit() 函数实现关闭driver对象启动的全部页面
9.driver.title 函数获取当前页面title信息
10.driver.current_url 函数获取当前页面url信息
三.selenium库定位八大方法
1.id定位方法
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() ###实例化浏览器
driver.get('https://www.baidu.com/') ###get打开浏览器
element = driver.find_element(By.ID, "kw").send_keys('搜索') ###id定位方法,kw=id, 搜索为输入
输出:
2.name定位方法
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###name定位方法 name='wd',1111为输入的内容
username = driver.find_element(By.NAME, 'wd').send_keys('1111')
输出:
3.class_name定位方法
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###class_name定位方法,class = 's_ipt',输入123456
Class = driver.find_element(By.CLASS_NAME, 's_ipt').send_keys('123456')
输出:
4.tag_name定位方法
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###
tel = driver.find_element(By.TAG_NAME, 'input').send_keys('1111')
一般标签重复性过高,要精确定位,都不会选择tag_name !
5.link_text定位方法,click单击打开
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###该⽅法只针对超链接元素(a 标签),并且需要输入超链接的全部⽂本信息
Text = driver.find_element(By.LINK_TEXT, '新闻').click()#
输出:
6.partial_link_text定位方法
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###partial_link_text定位方法,click单击打开,可以使用精准或模糊匹配
username = driver.find_element(By.PARTIAL_LINK_TEXT, '新闻').click()
7.Xpath定位方法
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###Xpath定位方法,称为相对路径定位法,运用copy xpath复制相对路径
username = driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('1111')
输出:
8.CSS定位法
常用策略:
1、id 选择器
语法:#id属性值
2、class 选择器
语法:.class属性值(如果使⽤具有多个值的 class 属性,则需要传入全部的属性值 语法:[class="全部属性值"])
3、属性选择器
语法1:[属性名=“属性值”]
语法2:标签名[属性名=“属性值”]
4、标签选择器
语法:标签名 如input,button
5、层级选择器
父子层级关系:父层级策略 > 子层级策略 (也可以使用空格连接上下层级策略)
祖辈后代层级关系:祖辈策略 后代策略
提示:>与空格的区别,大于号必须为子元素,空格则不用。
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
###id属性值
ID = driver.find_element(By.CSS_SELECTOR, '#kw"]').send_keys('11111')
###class属性值
Class = driver.find_element_by_css_selector('[class="s_ipt"]').send_keys('1111')
###语法属性
user = driver.find_element_by_css_selector('input[id="kw"]').send_keys('1111')
user = driver.find_element_by_css_selector('[name="wd"]').send_keys('1111')
###语法层级选择属性
user = driver.find_element_by_css_selector('#s_kw_wrap>input').send_keys('1111')
user = driver.find_element_by_css_selector('#form input').send_keys('1111')
driver.close()
八大定位方法就如上所述。
四.实例演示
1.元素的操作方法
(1)、.send_keys() # 输入方法
(2)、.click() # 点击方法
(3)、.clear() # 清空方法
2.实际操作
(1)进入百度搜索(2)搜索栏输入python(3)百度一下(3)选择python百度百科进入
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
###进入百度搜索
driver.get('https://www.baidu.com/')
###找到输入框,输入python
element = driver.find_element(By.ID, "kw").send_keys('python')
###单击鼠标开始搜索
element = driver.find_element(By.ID, "su").click()
###找到百度百科,单击鼠标进入
username = driver.find_element(By.XPATH, '//*[@id="2"]/div/div/h3/a').click()
后续对于selenium库的更多使用,下期再继续介绍啦!
@Neng