🔥《手把手》系列基础篇之2-python+ selenium-打开和关闭浏览器(详细)
1. 简介
本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器。要用selenium打开fiefox浏览器。首先需要去下载一个driver插件geckodriver.exe, 下载地址https://github.com/mozilla/geckodriver/releases,下载好这个exe文件后,把这个文件放到
你的python安装目录下,例如:C:\Python27\geckdriver.exe。
作为刚初学者,这里不建议使用Python IDE工具,选择一个功能强大的记事本编辑工具就好,例如Notepad++.等以后积累足够了,需要编写更多文件,或者后期简单框架设计,我们再来介绍和使用Pycharm这个IDE工具。
上一篇匆匆忙忙地将selenium安装以后也没有给小伙伴们介绍一下,今天就给不清楚的小伙伴和同学们普及一下selenium。
2. Selenium 基本介绍
Selenium`是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web 的管理任务自动化。
2.1 Selenium官网的介绍
Selenium is a suite of tools to automate web browsers across many platforms.
runs in many browsers and operating systems
can be controlled by many programming languages and testing frameworks.
Selenium 官网:http://seleniumhq.org/
Selenium Github 主页:https://github.com/SeleniumHQ/selenium
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试。
Selenium 经历了三个版本:Selenium 1,Selenium 2 和 Selenium 3。Selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景。
Selenium 诞生于 2004 年,当在 ThoughtWorks 工作的 Jason Huggins 在测试一个内部应用时。作为一个聪明的家伙,他意识到相对于每次改动都需要手工进行测试,他的时间应该用得更有价值。他开发了一个可以驱动页面进行交互的 Javascript 库,能让多浏览器
自动返回测试结果。那个库最终变成了 Selenium 的核心,它是 Selenium RC(远程控制)和 Selenium IDE 所有功能的基础。Selenium RC 是开拓性的,因为没有其他产品能让你使用自己喜欢的语言来控制浏览器。这就是 Selenium 1。
然而,由于它使用了基于 Javascript 的自动化引擎,而浏览器对 Javascript 又有很多安全限制,有些事情就难以实现。更糟糕的是,网站应用正变得越来越强大,它们使用了新浏览器提供的各种特性,都使得这些限制让人痛苦不堪。
在 2006 年,一名 Google 的工程师, Simon Stewart 开始基于这个项目进行开发,这个项目被命名为 WebDriver。此时,Google 早已是 Selenium 的重度用户,但是测试工程师们不得不绕过它的限制进行工具。Simon 需要一款能通过浏览器和操作系统的本地方法
直接和浏览器进行通话的测试工具,来解决Javascript 环境沙箱的问题。WebDriver 项目的目标就是要解决 Selenium 的痛点。
到了 2008 年,Selenium 和 WebDriver 两个项目合并。Selenium 有着丰富的社区和商业支持,但 WebDriver 显然代表着未来的趋势。两者的合并为所有用户提供了一组通用功能,并且借鉴了一些测试自动化领域最闪光的思想。这就是 Selenium 2。
2016 年,Selenium 3 诞生。移除了不再使用的 Selenium 1 中的 Selenium RC,并且官方重写了所有的浏览器驱动。
2.2 Selenium 工具集
2.2.1 Selenium IDE
Selenium IDE (集成开发环境) 是一个创建测试脚本的原型工具。它是一个 Firefox 插件,实现简单的浏览器操作的录制与回放功能,提供创建自动化测试的建议接口。Selenium IDE 有一个记录功能,能记录用户的操作,并且能选择多种语言把它们导出到一个可重用
的脚本中用于后续执行。
2.2.2 Selenium RC
Selenium RC 是selenium 家族的核心工具,Selenium RC 支持多种不同的语言编写自动化测试脚本,通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。
selenium RC 使用分Client Libraries 和Selenium Server。
Client Libraries 库主要主要用于编写测试脚本,用来控制selenium Server 的库。
Selenium Server 负责控制浏览器行为,总的来说,Selenium Server 主要包括3 个部分:Launcher、Http Proxy、Core。
2.2.3 Selenium Grid
Selenium Grid 使得 Selenium RC 解决方案能提升针对大型的测试套件或者哪些需要运行在多环境的测试套件的处理能力。Selenium Grid 能让你并行的运行你的测试,也就是说,不同的测试可以同时跑在不同的远程机器上。这样做有两个有事,首先,如果你有一个
大型的测试套件,或者一个跑的很慢的测试套件,你可以使用 Selenium Grid 将你的测试套件划分成几份同时在几个不同的机器上运行,这样能显著的提升它的性能。同时,如果你必须在多环境中运行你的测试套件,你可以获得多个远程机器的支持,它们将同时运行
你的测试套件。在每种情况下,Selenium Grid 都能通过并行处理显著地缩短你的测试套件的处理时间。
2.2.4 Selenium WebDriver
WebDriver 是 Selenium 2 主推的工具,事实上WebDriver是Selenium RC的替代品,因为Selenium需要保留向下兼容性的原因,在 Selenium 2 中, Selenium RC才没有被彻底的抛弃,如果使用Selenium开发一个新的自动化测试项目,那么我们强烈推荐使用
Selenium2 的 WebDriver进行编码。另外, 在Selenium 3 中,Selenium RC 被移除了。
3.浏览器驱动driver安装
3.1浏览器驱动driver的下载
driver的下载应该是比较坑的部分,一定需要注意浏览器版本。
从selenium官网进入下载界面,这个时候请往下拉,虽然第三方的浏览器都不是selenium官方开发的,但是你可以在selenium官网找到selenium支持的浏览器相对应的驱动driver下载链接,因为我在本地使用的浏览器版本都是比较新的,所以对应的driver版本也都下载最新版即可。
以下是三大常用浏览器的下载链接:
Google Chrome driver:https://sites.google.com/a/chromium.org/chromedriver/downloads
Mozilla GeckoDriver:https://github.com/mozilla/geckodriver/releases
Internet Explorer Driver:http://selenium-release.storage.googleapis.com/3.13/IEDriverServer_x64_3.13.0.zip
3.2浏览器驱动driver的安装
下载下来的zip文件解压至python安装目录中,可以放置在:C:\Users\Administrator\AppData\Local\Programs\Python\Python36中,但是推荐放置在scripts目录中:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts
完成以上工作,我们就可以进行测试使用selenium驱动浏览器了
4.测试驱动浏览器
4.1CMD中启动python并从selenium引入webdriver包
from selenium import webdriver
4.2驱动chrome浏览器
打开Chrome浏览器,访问谷歌网址,然后再关闭Chrome浏览器。
参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-25
@author: 北京-宏哥 QQ交流群:705269076
Project: python+ selenium-打开和关闭浏览器
''' # 3.导入模块
from selenium import webdriver
Ch_driver = webdriver.Chrome()
Ch_driver.get("https://www.google.com")
Ch_driver.quit() # 使用quit()关闭了chrome并结束了此次测试,如果是close()只是关闭chrome,后台仍在进行。
4.3驱动Firefox浏览器
打开Firefox浏览器,访问谷歌网址,然后再关闭Firefox浏览器。
参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-25
@author: 北京-宏哥 QQ交流群:705269076
Project: python+ selenium-打开和关闭浏览器
''' # 3.导入模块
from selenium import webdriver
Fi_driver = webdriver.Firefox()
Fi_driver.get("https://www.google.com")
Fi_driver.quit()
4.4驱动IE浏览器
打开IE浏览器,访问谷歌网址,然后再关闭IE浏览器。
参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-25
@author: 北京-宏哥 QQ交流群:705269076
Project: python+ selenium-打开和关闭浏览器
''' # 3.导入模块
from selenium import webdriver
Ie_driver = webdriver.Ie()
Ie_driver.get("https://www.google.com")
Ie_driver.quit()
看起来都正常驱动浏览器并打开了网页,然后关闭退出浏览器。这样我们就完成了selenium自动化测试的打开和关闭浏览器的准备工作~
注意:可能出现的报错
Exception: Message: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.
解决办法:Internet选项->安全; 把Internet站点,本地Intrant,受信任站点 三个地方的安全界面都设置相同等级,例如都设置中; 再次运行代码就可以用IE打开百度了。
总结:目前,由于IE的不稳定性和速度问题,建议采用火狐或者谷歌浏览器来测试和debug自动化脚本。
4.5总结
以上代码可以写在一个文件然后执行这个文件即可。细心的小伙伴或者是童鞋觉得刚打开浏览器时窗口有点小的话,你可以通过代码最大化一下浏览器。
用Notepad++打开一个空白文件,输入如下代码,保存为first.py
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-11-25
@author: 北京-宏哥 QQ交流群:705269076
Project: python+ selenium-打开和关闭浏览器
''' # 3.导入模块 from selenium import webdriver # 导入webdriver包 driver = webdriver.Firefox() # 初始化一个火狐浏览器实例:driver driver.maximize_window() # 最大化浏览器 driver.get("https://www.baidu.com") # 通过get()方法,打开一个url站点 driver.quit() #关闭并退出浏览器
打开cmd窗口,cd到first.py所在的路径,在cmd中输入命令: python first.py回车,可以看看是否打开火狐,打开百度,关闭火狐的效果。
小结
通过上面代码,和本文,基本了解了如何打开和关闭浏览器。如果想打开IE或者Chrome浏览器,也需要下载对应浏览器的driver.exe文件,放到python安装目录。
注意:可能会遇到一些报错
1. geckodriver.exe没有放到python安装目录下,这一类报错。
2. python first.py执行后,找到文件,说明没有通过cd命令切换到first.py所在的文件夹路径。
🔥《手把手》系列基础篇之2-python+ selenium-打开和关闭浏览器(详细)的更多相关文章
- Python+selenium打开或关闭浏览器
Python+selenium打开或关闭浏览器 一.打开或关闭火狐浏览器 1. 初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打 ...
- 《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用de ...
- 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...
- 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...
- 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)
1.简介 今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称 ...
- 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...
- 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些t ...
- 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...
- 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)
1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...
随机推荐
- 零基础教程!一文教你使用Rancher 2.3和Terraform运行Windows容器
本文来自Rancher Labs 介 绍 在Kubernetes 1.14版本中已经GA了对Windows的支持.这一结果凝结了一群优秀的工程师的努力,他们来自微软.Pivotal.VMware.红帽 ...
- 开普勒云平台:如何配置gitlab与Jenkins
一.Kplcloud是什么? kplcloud是一个基于Kubernetes的轻量级PaaS平台,通过可视化的界面对应用进行管理,降低应用容器化的对度,从而减少应用容器化的时间成本. Kplcloud ...
- GO基础之流程控制语句
一.if分支语句 if 布尔表达式 1 { /* 在布尔表达式 1 为 true 时执行 */ } ; a% == { fmt.Println("偶数") } if 布尔表达式 1 ...
- Leetcode(2)两数相加
Leetcode(2)两数相加 [题目表述]: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...
- 误删除 mySQL 用户解决办法
误删除用户解决办法 删除用户 删除用户 mysql> truncate mysql.user;Query OK, 0 rows affected (0.05 sec)mysql> sel ...
- WinFrom中音频播放
public void RightVoiceAndHint() { string path = CimsConstant.APLICATION_PATH + "wav\\Success.wa ...
- vuex状态管理安装方法
1.可以启动vue ui 手动添加vuex. 或使用 cnpm install vuex 2.使用,import vuex from “vuex” vue.use(vuex) 3.安装插件, 首先键入 ...
- 关于JQUery.parseJSON()函数的知识札记
JSON数据也许大家都很陌生,而对我来讲属于半成品,由于项目问题,做web虽然用的是JSON数据格式传输,但是关于解析这一块还真不知道该注意什么,更不知道它是如何解析的,由于最近要把串口通信协议与此一 ...
- docker已运行容器添加或修改端口映射
# 不推荐方法:将原来的容器提交成镜像,然后利用新的建立的镜像重新建立一个带有端口映射的容器# 推荐方法:## 查看id 就是 容器的 hash_of_the_container 数值 docker ...
- Kettle6.1连接MongoDB报错
配置好mongodb连接之后,点击预览报下面的错: 报错: java.lang.NoClassDefFoundError: javax/crypto/spec/PBEKeySpec a ...