Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接调用浏览器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏等。我们可以使用selenium很容易完成之前编写的爬虫,接下来我们就来看一下selenium的运行效果

一.安装环境

python+selenium+chrome

(1)python建议用python3及以上的版本

(2)selenium库这边我们使用pip接口进行安装

pip install selenium

pip接口详细说明可以看:https://blog.csdn.net/pengneng123/article/details/129556320

(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 webdriverfrom selenium.webdriver.common.by import Bydriver = 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 webdriverfrom selenium.webdriver.common.by import Bydriver = 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 webdriverfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get('https://www.baidu.com/')###class_name定位方法,class = 's_ipt',输入123456Class = driver.find_element(By.CLASS_NAME, 's_ipt').send_keys('123456')

输出:

4.tag_name定位方法

from selenium import webdriverfrom selenium.webdriver.common.by import Bydriver = 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 Byfrom selenium.webdriver.common.keys import Keysdriver = 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 Byfrom selenium.webdriver.common.keys import Keysdriver = 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 Byfrom selenium.webdriver.common.keys import Keysdriver = 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 Byfrom selenium.webdriver.common.keys import Keysdriver = 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 Byfrom selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome()###进入百度搜索driver.get('https://www.baidu.com/')###找到输入框,输入pythonelement = 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