转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/82761255
本文出自【我是干勾鱼的博客】

Ingredient:

  • Selenium: pip3 install selenium(chromedriver)

1 Selenium是什么

Selenium是一个自动化测试框架,广泛的用于自动化测试领域(是不是真的广泛用于自动化测试领域我也不知道,没怎么搞过自动化测试 -_-!,这是我臆测的 = ̄ω ̄=)。因为它能够模拟人工操作,比如能在浏览器中点击按钮、在输入框中输入文本、自动填充表单、还能进行浏览器窗口的切换、对弹出窗口进行操作。也就是说你能手动做的东西,基本都能用它来实现自动化!

2 安装Selenium

在python3下安装Selenium,使用命令:

pip3 install selenium

3 下载Chrome浏览器指定版本驱动

使用Selenium经常会在浏览器下使用,当然Chrome浏览器是较为常用的,经常Chrome中访问网页时会遇到如下错误:

selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

其实这是因为没有找到合适的Chrome驱动,解决办法就是讲chromedriver下载下来,并制定路径,既可以指定到环境变量里,也可以在selenium运行文件中指定这里采用后者。

先到chromedriver官网下载与你所安装的Chrome浏览器版本相匹配的chromedriver,这里注意,笔者Chrome浏览器版本是69,我们找到当前最新的chromedriver 2.42版本这里,打开note.txt文件,查看这个版本浏览器对应的chromedriver驱动,能够看到:

----------ChromeDriver v2.42 (2018-09-13)----------
Supports Chrome v68-70
Resolved issue 2144: Test testClickElement from MobileEmulationCapabilityTest class fails on Chromium for all platforms [[Pri-1]]
Resolved issue 2566: whitelisted-ips not working with ipv4 [[Pri-1]]
Resolved issue 2541: chromedriver v2.41 fails to start with whitelisted-ips flag on macOS [[Pri-1]]
Resolved issue 2057: Set Timeouts is not implemented [[Pri-1]]
Resolved issue 1938: Take element screenshot not implemented in Chromedriver [[Pri-2]]
Resolved issue 2550: chromedriver ignores PATH when searching for chrome binary [[Pri-2]]
Resolved issue 1993: Fullscreen Window command not spec compliant [[Pri-2]]
Resolved issue 2501: Implement log-replay functionality [[Pri-2]]
Resolved issue 2552: Some error codes are not standard compliant [[Pri-2]]
Resolved issue 669: console.log with multiple arguments not handled properly [[Pri-2]]
Resolved issue 2545: Getting “unknown error: getting size failed to return x” for SVG rect [[Pri-2]]
Resolved issue 2571: chromedriver 2.35 ~ 2.41 - touch emulation not working (swipe) [[Pri-]]
----------ChromeDriver v2.41 (2018-07-27)----------
Supports Chrome v67-69
Resolved issue 2458: Chromedriver fails to start with whitelisted-ips option [[Pri-1]]
Resolved issue 2379: Returned capabilities should include remote debugging port [[Pri-2]]
Resolved issue 1005: driver.manage().window().getSize() is not implemented on Android [[Pri-2]]
Resolved issue 2474: desktop launcher error messages are not readable by users [[Pri-]]
Resolved issue 2496: Fail fast when not able to start binary [[Pri-]]
Resolved issue 1990: Close Window return value does not conform with spec [[Pri-]]
----------ChromeDriver v2.40 (2018-06-07)----------
Supports Chrome v66-68
Resolved issue 2446: Regression: Chromedriver 2.39 hangs on open when user-data-dir is specified and exists [[Pri-1]]
Resolved issue 779: Make ChromeDriver able to listen on requests from IPv6. [[Pri-1]]
Resolved issue 2339: Chromedriver couldn’t find the Android file using valid file path [[Pri-2]]
Resolved issue 2307: /session/:sessionId/send_command and /session/:sessionId/send_command_and_get_result should be changed to be proper extension commands [[Pri-]]

可知v2.41、v2.42都支持Chrome的69这个版本,我们下载chromedriver 2.41。

然后在使用selenium时指定驱动保存的路径,例如:

#指定使用的浏览器,初始化webdriver
driver = webdriver.Chrome(executable_path='/Users/yuhaidong/studying/selenium/chromedriver')

就可以了,详见下面测试中的代码。

4 测试

4.1 实例1

创建文件:

seleniumtest.py

内容如下:

from selenium import webdriver                 #导入Selenium的webdriver
from selenium.webdriver.common.keys import Keys #导入Keys#指定使用的浏览器,初始化webdriver
driver = webdriver.Chrome(executable_path='/Users/username/studying/selenium/chromedriver')
#请求网页地址
driver.get("http://www.python.org")
#看看Python关键字是否在网页title中,如果在则继续,如果不在,程序跳出。
assert "Python" in driver.title
#找到name为q的元素,这里是个搜索框
elem = driver.find_element_by_name("q")
#清空搜索框中的内容
elem.clear()
#在搜索框中输入pycon
elem.send_keys("pycon")
#相当于回车键,提交
elem.send_keys(Keys.RETURN)
#如果当前页面文本中有“No results found.”则程序跳出
assert "No results found." not in driver.page_source
#关闭webdriver
driver.close()

注意到这里面的:

driver = webdriver.Chrome(executable_path='/Users/username/studying/selenium/chromedriver')

就制定了chromedriver的存放路径。

运行:

python3 seleniumtest.py

就能够出现Chrome浏览器被打开并进行搜索然后关闭,如果觉得一闪而过可以将“driver.close() ”注释掉再运行一下查看结果。

4.2 实例2

新建文件:

seleniumtest_unsplash.py

内容如下:

from selenium import webdriver                 #导入Selenium的webdriver
from selenium.webdriver.common.keys import Keys #导入Keys
from bs4 import BeautifulSoup                   #导入BeautifulSoup模块
import time                                     #导入time模块#指定使用的浏览器,初始化webdriver
driver = webdriver.Chrome(executable_path='/Users/yuhaidong/studying/selenium/chromedriver')
#请求网页地址
driver.get("https://www.unsplash.com")# 设置下拉次数
times = 3
# 循环操作下拉过程
for i in range(times):print("---------开始执行第", str(i + 1),"次下拉操作---------")#执行JavaScript实现网页下拉倒底部driver.execute_script("window.scrollTo(0, document.body.scrollHeight - 2000);")print("第", str(i + 1), "次下拉操作执行完毕!开始等待页面加载...")# 等待10秒(时间可以根据自己的网速而定),页面加载出来再执行下拉操作time.sleep(10)all_a = BeautifulSoup(driver.page_source, 'html.parser').find_all('img', class_='_2zEKz')print("img标签的数量是:", len(all_a))#关闭webdriver
driver.close()

这段代码实现了利用Selenium下拉浏览器以便展示出新图片的效果。为了能在控制台中输出图片的数量,这里面还用到了BeautifulSoup。

参考

selenium:解决 ‘chromedriver’ executable needs to be in PATH 报错 | session not created exception

Python爬虫小白入门(四)PhatomJS+Selenium第一篇

chromedriver官网

自动化测试框架Selenium的使用——安装Selenium相关推荐

  1. jenkins+python+git自动化测试框架_使用jenkins + python + selenium一步步搭建web自动化测试“框架”(1) - 各部件简介...

    原先搭建过一个自动化测试框架,迷迷糊糊不求甚解,算是搭建了一个仅限于能用的.根本算不上框架的玩意儿. 现在回过头来好好看看究竟每一步是怎么联系起来的,是怎么运行起来的. 本次博客先说说各部件都是干什么 ...

  2. Appium自动化测试框架的原理、安装以及使用

    appium是一个开源的移动端自动化测试框架,可以测试原生的.混合的以及移动端的web项目,appium是跨平台的,可以运行在osx.windows以及linux桌面系统上,用来测试ios.andro ...

  3. 设计自己的基于Selenium 的自动化测试框架-Java版(1) - 为什么selenium还需要测试框架?...

    本人自动化测试接触时间不久,如有误导,概不负责. 既然有了selenium这个开源的自动化的工具,为什么还要我们自己再去写一个框架? Selenium是自动化的工具,当然是可以用在测试领域,但他不是为 ...

  4. 自动化测试框架 splinter安装

    简介 Spliter是一个用Python开发的开源工具,用于测试Web应用程序.它允许您自动执行浏览器操作,例如访问URL并与其项交互.Spliter是现有浏览器自动化工具(如Selenium和Zop ...

  5. python安装selenium报错_新手用Python运行selenium的常见问题

    1.更换Python版本 打开pycharm,点击 file--setting--project项目名--project Interpreter,点击右侧的设置,如下图 选择新Python版本的安装路 ...

  6. 基于网页自动化Selenium IDE的安装与部署 图书馆选座、网站防休眠、自动点击等

    基于网页自动化Selenium IDE的安装与部署 一. Selenium IDE的简介.安装与使用 1. 什么是Selenium IDE? 2. Selenium IDE的安装和使用 3. 导出内容 ...

  7. 7种前端自动化测试框架,到底谁是No.1

    7种前端自动化测试框架,到底谁是No.1 互联网时代,我们对web前端进行测试,不应该只关注其功能是否实现,还有其它更多的测试内容,如样式是否符合预期.交互是否流畅.应用是否安全等各个方面. 前端自动 ...

  8. 自动化测试框架搭建三python环境安装selenium和手动下载安装selenium的方法

    python环境安装selenium和手动下载安装selenium的方法 方法1:cmd环境下,用pip install selenium 可能会很慢 方法2:下载selenium安装包手动安装 下载 ...

  9. python3.7界面设计_基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架

    前端自动化测试框架 项目说明 本框架是一套基于selenium+Python3.7+yaml+Robot Framework而设计的数据驱动UI自动化测试框架,Robot Framework 作为执行 ...

  10. Selenium WebDriver + python 自动化测试框架

    目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤.检查点,然后执行自动化工程,即可执行功能自动化测试用例 ...

最新文章

  1. turtle文库 ——python
  2. java凌晨12点_java - JAVA如果我在每天中午12点之后安排我的时间表,会发生什么? - SO中文参考 - www.soinside.com...
  3. 29日直播丨 Oracle RMAN 单实例异机迁移恢复(版本:11GR2)
  4. lru算法c语言实现单链表,基于单链表实现LRU算法
  5. 期货市场技术分析01_理论基础
  6. 普通用户使用docker命令
  7. 银保监会:防范以“元宇宙”名义进行的非法集资 | 产业区块链发展周报
  8. 量化选股常见的策略模型
  9. excel锁定单元格不能修改_Excel如何锁定部分区域不被编辑,1分钟就学会
  10. 48个快速操作office技巧
  11. Android NDK jint和jstring转换 以及jstring转换成jint的详解
  12. 关于同步、异步传输的解释
  13. mysql印度时区_一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历...
  14. Python爬虫贴吧内容
  15. 面试经验 - 如何进行项目介绍?
  16. ubuntu安装showdoc
  17. 20230412英语学习
  18. CodeForces - [ACM-ICPC Jiaozuo Onsite D]Honeycomb(BFS)
  19. 扬州和苏州计算机发展前景,江苏未来“最吃香的”城市,GDP仅次于北上广深,淮安、扬州落选...
  20. Google SRE最佳实践之On-Call

热门文章

  1. My97DateTimePicker使用说明
  2. Hello I am whiter. Nice to meet you!!!
  3. html5给文字添加拼音,word怎么为文字添加拼音
  4. c语言if语句知识点总结,c语言中if语句知识点总结
  5. ## 全国各地“十四五”能源发展规划,这里都有了!
  6. u盘显示请插磁盘f_U盘插电脑上一直显示请插入磁盘是啥意思 - 卡饭网
  7. 移动硬盘在Windows和Mac上同时使用的巨坑
  8. 增加收入的销售 OKR 案例 – 用这些 OKR 范例来设定你的销售团队目标
  9. 什么是 DNS,有什么作用?为什么需要更换公共DNS服务器?
  10. cocos2d-x 音乐/音效设置