赞
踩
我们以谷歌浏览器的chromedriver为例
1、在Python虚拟环境中安装selenium模块
pip/pip3 install selenium
2、下载版本符合的webdriver
以chrome谷歌浏览器为例
查看谷歌浏览器的版本
鼠标点击右上角的竖排的三个点,然后选择“帮助”,选择“关于 Google Chrome”,进去之后即可查看谷歌浏览器的版本
访问下载chromedriver网站
访问chromedriver下载地址,点击进入不同版本的chromedriver下载页面
点击notes.txt进入版本说明页面
查看chrome和chromedriver匹配的版本
根据操作系统下载正确版本的chromedriver
解压压缩包后获取python代码可以调用的谷歌浏览器的webdriver可执行文件
chromedriver环境的配置
3、chromedriver环境配置的教程
windows环境下将 chromedriver.exe 所在的目录设置为path环境变量中的路径的过程
鼠标右键点击“Google Chrome” ,然后点击“打开文件所在位置”复制 chrome.exe 所在的文件路径
接着打开“控制面板” 搜索输入 “环境变量” 并搜索,然后点击 “编辑系统环境变量”
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的。
Selenium 可以直接调用浏览 器,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页 面,获取需要的数据,甚至页面截屏等。
我们可以使用selenium很容易完成之前编写的爬虫,接下来我们就来 看一下selenium的运行效果
接下来我们就通过代码来模拟百度搜索(展示效果)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
运行结果
webdriver.Chrome(executable_path='./chromedriver') 中executable参数指定的是下载好的
chromedriver文件的路径
driver.find_element_by_id('kw').send_keys('python') 定位id属性值是'kw'的标签,并向其中输入字符 串'python'
driver.find_element_by_id('su').click() 定位id属性值是su的标签,并点击
click函数作用是:触发标签的js的click事件
在使用selenium过程中,实例化driver对象后,driver对象有一些常用的属性和方法
示例
打印当前标签页的url
1 2 3 4 5 6 7 8 9 10 |
|
运行结果:
在selenium中可以通过多种方式来定位标签,返回标签元素对象
方式 | 功能 |
---|---|
find_element_by_id | 返回一个元素 |
find_element(s)_by_class_name | 根据类名获取元素列表 |
find_element(s)_by_name | 根据标签的name属性值返回包含标签对象元素的列表 |
find_element(s)_by_xpath | 返回一个包含元素的列表 |
find_element(s)_by_link_text | 根据连接文本获取元素列表 |
find_element(s)_by_partial_link_text | 根据链接包含的文本获取元素列表 |
find_element(s)_by_tag_name; | 根据标签名获取元素列表 |
find_element(s)_by_css_selector | 根据css选择器来获取元素列表 |
注意
find_element和find_elements的区别:
by_link_text 和 by_partial_link_tex 的区别:全部文本和包含某个文本
以上函数的使用方法:
driver.find_element_by_id('id_str')
id_str是id值
示例
接下来我们就通过代码来模拟百度搜索(具体讲解)
首先我们先打开百度页面,然后点击网页检查 ,定位搜索框,可以看见搜索框的input标签的id值为kw
1 2 3 4 5 6 7 8 9 10 |
|
再定位搜索按钮:“百度一下” ,其id值为su
完善代码,通过 .click() 实现点击搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
运行结果
find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法
对元素执行点击操作: element.click()
对定位到的标签对象进行点击操作
向输入框输入数据: element.send_keys(data)
对定位到的标签对象输入数据
获取文本: element.text
通过定位获取的标签对象的 text 属性,获取文本内容
获取属性值: element.get_attribute("属性名")
通过定位获取的标签对象的 get_attribute 函数,传入属性名,来获取属性的值
获取 “百度一下”搜索按钮的value属性值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
运行结果
我们知道,当我们利用 dirver.get() 获取网页时会自动打开一个网页,但是有时候我们可能不需要通过打开浏览器获取数据,于是就可以通过给driver对象设置无头模式 。
1 2 3 4 |
|
- 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
- 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
- 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
- 分享他们的经验,还会分享很多直播讲座和技术沙龙
- 可以免费学习!划重点!开源的!!!
- qq群号:485187702【暗号:csdn11】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。