本章将使用当前最新的 Python3和 Selenium3 作为 Web 自动化测试框架开发基础。既然是自动化脚本的开发,那么一切都需要多实践,需要动手敲下每一个实例中的每行代码,然后根据实际项目举一反三,就绝对可以有信心地跟别人说:“Selenium! So Easy!”
知识点:
HTML 技术:了解一个HTML页面的基本结构、基本元素、常用的HTML标签及使用是实现Web自动化脚本设计的基础。
CSS技术:CSS是层叠样式表。为了实现网页美化以及各种特效,CSS 是必不可少的在后期高级的元素定位方式中也需要应用到CSS 技术以及jQuery 方法,所以了解学习CSS 是必要的。
Selenium 基础:了解 Selenium 的版本区别(Selenium IDE 可录制脚本插件),掌握Selenium实现脚本的核心原理及浏览器驱动的应用方法。
Selenium 元素定位大全:除了 8 种基本元素定位,本书将继续扩展多种高级定位方法
Selenium操作浏览器机制:掌握 Selenium 实现浏览器的相关操作方法,如放大、缩小全屏、截图等。
WebDriverAPI及对象识别技术(一):掌握鼠标和键盘事件,处理一个HTML页面中包含多个IFrame的情况,下拉列表框的多种实现方式等。WebDriverAPI 及对象识别技术(二):掌握如何控制脚本的执行度,基于不同的文件类型实现文件的上传和下载操作,解决面试必问的一个热点话题,掌握验证码如何实现多种方式的处理等。
前端HTML/CSS学习:w3school 在线教程
1.1 Selenium 简介
Selenium是一款免费的、开源的、基于Web页面的UI自动化测试工具,它可以支持多个浏览器(如IE、FireFox、Safari、Chrome、Android 手机浏览器等)、支持跨平台(如 Windows、Linux、IOS、Android等)、支持多语言(如Java、C#、Python、Php等)等。Selenium提供了一套完善的测试函数,功能非常灵活,能够完成界面元素的定位、窗口的跳转、结果的比较等。
补充:
Selenium是一款用于测试Web应用程序的经典工具,它直接运行在浏览器中,仿佛真正的用户在操作浏览器一样,主要用于网站自动化测试、网站模拟登陆、自动操作键盘和鼠标、测试浏览器兼容性、测试网站功能等,同时也可以用来制作简易的网络爬虫。
1.2 Selenium家族
Selenium 框架其实是由多个工具组成的,分别是 Selenium IDE、Selenium RC、Selenium WebDriver和Selenium Grid。
Selenium IDE是一个可以通过录制操作完成基本脚本构建的工具,拥有简单易用的界面。它是 FireFox 浏览器中的一个插件,可以录制用户的基本操作,生成测试脚本。生成的脚本不仅可以直接在浏览器中进行回放,还可以转换成各种语言的自动化脚本并保存到本地。
Selenium RC可以说是整个Selenium家族的核心,它使用编程语言来创建更为复杂的测试其编程语言可以是JavaC#、PHP、Python等。Selenium RC主要是由Client Libraries和SeleniumServer 组成的,Client Libraries 主要通过编写测试脚本来控制 Selenium Server 库,而Selenium Server主要负责控制浏览器的行为,该库又包括三部分:Launcher Http Proxy和Core。Selenium Core是一系列JavaScript函数的集合,只有通过JavaScript 函数才可以实现用程序对浏览器进行相应的操作。而 Launcher 的作用主要是启动浏览器,然后将 Selenium Core 加载到浏览器页面中,通过Selenium Server的 HttpProxy完成对应浏览器的代理设置。
Selenium WebDriver其实就是Selenium RC的升级版,是基于Selenium RC进行再次封装的可以直接发送命令给浏览器。
Selenium Grid用于运行不同的机器,不同的浏览器进行并行测试,目的就是加快测试用例的运行速度,从而减少测试运行的总时间。灵活利用 Grid 可以很简单地让多台机器在异构环境
下载安装:pip install selenium
1.3 浏览器驱动
Selenium需要安装浏览器驱动,才能调用浏览器进行自动爬取或自动化测试,常见的包括Chrome、Firefox、IE、PhantomJS等浏览器。
附浏览器驱动下载地址: Chrome浏览器驱动:chromedriver , 备用地址 Firefox浏览器驱动:GitHub地址,geckodriver Edge浏览器驱动:MicrosoftWebDriver IE浏览器驱动:IEDriverServer Opera浏览器驱动:operadriver PhantomJS浏览器驱动:phantomjs注意:驱动下载解压后,将chromedriver.exe、geckodriver.exe、Iedriver.exe置于Python的安装目录下,例如Python的安装目录为“C:\python”,则将驱动文件放置于该文件夹下;然后将Python的安装目录添加到系统环境变量路径(Path)中,打开Python IDLE输入不同的代码来启动不同的浏览器
PhantomJS是一个服务器端的 JavaScript API 的开源的浏览器引擎(WebKit)。它支持各种Web标准,包括DOM树分析、CSS选择器、JSON和SVG等。PhantomJS常用于页面自动化、网络监测、网页截屏以及无界面测试等
驱动加载代码示例
# 火狐 from selenium import webdriver driver = webdriver.Firefox() driver.get('http://www.baidu.com/') # Chrome from selenium import webdriver get_webdriver = webdriver.Chrome() get_webdriver.get('http://192.168.235.128/index.php/home') # IE from selenium import webdriver browser = webdriver.Ie() browser.get('http://www.baidu.com/') # Phantomjs from selenium import webdriver driver=webdriver.PhantomJS(executable_path="F:\phantomjs.exe") driver.get("http://www.baidu.com") data = driver.title print(data)
1.4 Selenium快速入门示例(百度):
import time from selenium import webdriver from selenium.webdriver.common.keys import Keys #启动火狐浏览器驱动 driver = webdriver.Firefox() driver.get("http://www.baidu.com") assert "百度" in driver.title print(driver.title) #查找元素并输入内容 elem = driver.find_element_by_name("wd") elem.send_keys("自动化测试") elem.send_keys(Keys.RETURN) #截图并退出 time.sleep(10) driver.save_screenshot('baidu.png') driver.close() driver.quit()
代码解析:
-
from selenium import webdriver
导入Selenium.webdriver模板,它提供了webdriver的实现方法,目前支持这些方法的浏览器有Firefox、Chrome、IE和Remote等。
-
from selenium.webdriver.common.keys import Keys
导入Keys类,它提供了操作键盘的快捷键,如回车键、空格键、ctrl键等操作。
-
driver = webdriver.Firefox()
创建Firefox webdriver实例,定义火狐浏览器(Firefox)驱动,其他浏览器如Chrome可能还需要设置驱动参数和配置路径。
-
driver.get(“http://www.baidu.com”)
接下来通过driver.get()函数打开百度url网页,webdriver会等待网页元素加载完成之后才把控制权交回脚本。
-
assert “百度” in driver.title
接下来使用断言(assert)判断文章的标题title是否包含了“百度”字段。对应爬取的标题是“百度一下,你就知道”,所以包含了“百度”,否则会出现断言报错。断言主要用于判断结果是否成功返回,从而更好地执行下一步定位操作。
-
elem = driver.find_element_by_name(“wd”)
webdriver提供了很多形如“find_element_by_*”的方法来匹配要查找的元素。如利用name属性来查找的方法是find_element_by_name,这里通过该方法来定位百度输入框,即审查元素name为“wd”的节点。
-
driver.find_element_by_id(“kw”)
百度首页审查元素的反馈结果,其中输入框input元素对应属性name为“kw”
- elem.send_keys(“自动化测试”)
send_keys()方法可以用来模拟键盘操作,相当于是在搜索框中输入“自动化测试”字段。
-
elem.send_keys(Keys.RETURN)
调用send_keys()函数输入回车键操作,其中Keys类提供了常见的键盘按键,如Keys.RETURN表示回车键。但在引用Keys类及其方法之前,需要注意先导入Keys类,即使用“from selenium.webdriver. common.keys import Keys”代码导入。
- 补充:此处也也可以使用鼠标类:from selenium.webdriver.common.action_chains import ActionChains,定位“百度一下”按钮的元素,并通过.click()方法搜索
-
driver.save_screenshot(‘baidu.png’)
调用save_screenshot()函数进行截图,并将截图保存至本地,名称为为“baidu.png”。
-
driver.close()
调用close()方法关闭驱动。
-
driver.quit()
调用quit()方法退出驱动。它与close()方法的区别在于:quit()方法会退出浏览器,而close()方法只是关闭页面,但如果只有一个页面被打开,close()方法会退出浏览器。
文章内容来源:《Python全栈测试开发》、娜章ai安全之家
标签:webdriver,浏览器,Selenium,driver,----,全栈,import,selenium From: https://www.cnblogs.com/Candy123/p/17491234.html