【弃】Selenium官⽅⽂档中⽂版
【到官⽅中⽂⽂档,⽆须个⼈翻译,可⽤作参考相关链接】
Selenium浏览器⾃动化项⽬
Selenium是⼀个涵盖了了⼀些列⼯具和库的总体项⽬,这些⼯具和库允许和⽀持⽹站浏览器的⾃动化。
它提供了模拟⽤户和浏览器交互的扩展,⼀个扩展浏览器配置的分布式服务器,以及⽤于实现 W3C (World Wide Web Consotium 万维⽹联盟) WebDriver 规范的基础结构,该规范让你可以为所有主流服务器编写可通⽤的代码。
这个项⽬是由志愿者贡献的,他们⾃⼰投⼊了数千⼩时,并使任何⼈对源代码都可以免费的享⽤和改进。
Selenium将浏览器供应商、⼯程师和热衷者聚集在⼀起,进⼀步对⽹络平台⾃动化进⾏公开的讨论。这个项⽬每年组织⼀次会议教导培育社区。
Selenium的核⼼是WebDriver,⼀个可以编写指令集的接⼝,可以在许多浏览器中通⽤运⾏。这是⼀个你可以做的最简单指令(基于Python)。
from selenium import webdriver #导⼊selenium模块中的 webdriver⼦模块
from selenium.webdrivermon.by import By #对结构体成员的引⽤运算符.
from selenium.webdrivermon.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait #等待页⾯元素加载完毕
from selenium.pected_conditions import presence_of_element_located
#This example requires Selenium WebDriver 3.13 or newer
with webdriver.Firefox()as driver:
wait = WebDriverWait(driver,10)
<("google/ncr")
driver.find_element(By.NAME,"q").send_keys("cheese"+ Keys.RETURN)
first_result = wait.until(presence_of_element_located((By.CSS_SELECTOR,"h3>div")))
print(_attribute("textContent"))#??
有关运⾏此代码时屏幕背后发⽣的事情的完整解释,请参阅快速导览。你应当继续阅读叙述⽂档,以便理解怎样安装并成功⽤Selenium作为⾃动化测试⼯具,以及如何将这样的简单测试扩展到可在多个浏览器、多个不同的操作系统上的⼤型分布式环境运⾏。
开始
如果你是使⽤Selenium的新⼿,我们有⼀些资源来帮助你⽴即跟上速度。
快速浏览
Selenium不仅仅是⼀个⼯具或应⽤程序接⼝,它还包含许多⼯具。
WebDriver
如果你是从桌⾯⽹站或移动⽹站⾃动化测试开始的,你将会使⽤ WebDriver APIs。WebDriver ⽤浏览器⼚商提供的浏览器⾃动化APIs控制浏览器并运⾏测试。这就像⼀个真实的⽤户正在操作浏览器。因为WebDriver不需要应⽤程序代码编译它的API,所以它不具有侵⼊性。因此,你正在测试你实时推送的同⼀个应⽤程序。
IDE
集成开发环境是⽤来开发Selenium测试⽤例的⼯具。它是⼀个易于使⽤的⾕歌和⽕狐浏览器扩展,通常是开发测试⽤例的最有效的⽅式。它⽤现有的Selenium命令为你记录⽤户在浏览器上的操作,参数由该元素的上下⽂定义。这不仅节省时间,⽽且是学习Selenium脚本语法的卓越⽅式。
Grid
Selenium Grid 允许你在不同的计算机上跨平台运⾏测试⽤例。触发测试⽤例的控制是在本地端,当触发测试⽤时,由远程端⾃动执⾏。在WebDriver测试开发后,你可能需要在不同浏览器和操作系统组合上运⾏测试。这就是Grid出现的地⽅。
介绍
Selenium是⼀个涵盖了了⼀些列⼯具和库的总体项⽬,这些⼯具和库允许和⽀持⽹站浏览器的⾃动化。
Selenium项⽬和⼯具
Selenium控制⽹络浏览器
Selenium有很多功能,但它的核⼼是⼀个web浏览器⾃动化⼯具集,它使⽤现有的最佳技术来远程控制浏览器实例并模拟⽤户与浏览器的交互。
它允许⽤户模拟终端⽤户执⾏的常见活动;在字段中输⼊⽂本,选择下拉值和复选框,然后单击⽂档中的链接。它还提供许多其他控件,如⿏标移动、任意JavaScript执⾏等等。
尽管Selenium主要⽤于⽹站的前端测试,但它的核⼼是⼀个浏览器⽤户代理库。这些接⼝在它们的应⽤程序中⽆处不在,这⿎励了与其他库的组合以满⾜你的⽬的。
⼀个接⼝控制它们
该项⽬的指导原则之⼀是⽀持所有(主要)浏览器技术的通⽤接⼝。⽹络浏览器是极其复杂的、⾼度⼯程化的应⽤程序,以完全不同的⽅式执⾏操作,但执⾏时通常看起来是相同的。即使⽂本以相同的字体呈现,图像在相同的位置显⽰,链接将你带到相同的⽬的地。下⾯发⽣的事情就像⽩天和⿊夜⼀样不同。Selenium“抽象”了这些差异,对编写代码的⼈隐藏了它们的细节和复杂性。这允许你编写⼏⾏代码来执⾏复杂的⼯作流,但这些代码⾏将在⽕狐、IE、⾕歌和所有其他受⽀持的浏览器上执⾏。
⼯具和⽀持
Selenium的极简主义设计⽅法使它具有多功能性,可以作为⼀个组件包含在更⼤的应⽤程序中。Sele
nium保护伞下提供的周边基础设施为你提供了将浏览器Grid组合在⼀起的⼯具,因此可以跨⼀系列机器在不同的浏览器和多个操作系统上运⾏测试。
想象服务器机房或数据中⼼的⼀组计算机同时启动浏览器,24⼩时不间断地访问站点的链接、窗体和表来测试应⽤程序。通过为最常见的语⾔提供的简单编程接⼝,这些测试将不知疲倦地并⾏运⾏,在出现错误时向你报告。
它旨在通过向⽤户提供⼯具和⽂档来帮助您实现这⼀点,不仅可以控制浏览器,还可以⽅便地扩展和部署这样的⽹格。
谁使⽤Selenium
世界上许多最重要的公司都采⽤了Selenium来进⾏基于浏览器的测试,这往往取代了涉及其他专有⼯具的多年努⼒。随着它越来越受欢迎,它的要求和挑战也成倍增加。
随着⽹络变得越来越复杂,新技术被添加到⽹站上,这个项⽬的任务是尽可能地跟上他们。作为⼀个开源项⽬,这项⽀持是通过许多志愿者慷慨奉献时间提供的,每个志愿者都有⼀份“⽇常⼯作”。
该项⽬的另⼀个任务是⿎励更多的志愿者参与这项⼯作,并建⽴⼀个强⼤的社区,以便该项⽬能够继续跟上新兴技术的发展,并保持为功能测试⾃动化的主流平台。
历史selenium怎么使用
当Selenium 1在2004年发布时,就没有必要减少在web应⽤程序前端⼿动验证⼀致性⾏为所花费的时间。它利⽤了当时可⽤的⼯具,并在很⼤程度上依赖于将JavaScript注⼊被测⽹页来模拟⽤户的交互。
尽管JavaScript是⼀个很好的⼯具,可以让你内省DOM的属性,并进⾏某些客户端观察,否则你将⽆法进⾏这些观察,但它在⾃然复制⽤户交互的能⼒⽅⾯还存在不⾜,就像使⽤⿏标和键盘⼀样。
从那时起,Selenium已经成长和成熟了很多,成为⼀种被世界上许多(如果不是⼤多数)最⼤的组织⼴泛使⽤的⼯具。Selenium已经从Thoughtworks为少数体观众和⼀个特定⽤例开发的⾃制测试⾃动化⼯具包,发展为全球事实上的浏览器⾃动化库。
正如Selenium RC利⽤了当时可⽤的⾏业⼯具⼀样,Selenium WebDriver将浏览器交互部分带到浏览器⼚商的主页,并要求他们负责⾯向浏览器的后端实现,从⽽推动了这⼀传统。最近,这项⼯作已经演变成⼀个W3C标准化过程,其⽬标是将Selenium中的WebDriver组件转变为⽤户代理的当⽇远程控制库。
⾃动化测试
测试的种类
关于这份⽂档
Selenium安装
Selenium的设置与其他商业⼯具的设置⼤不相同。要在⾃动化项⽬中使⽤Selenium,你需要安装所选语⾔的语⾔绑定库。另外你将需要WebDriver⼆进制⽂件⽤于你想要⾃动化运⾏并运⾏测试的浏览器。
安装Selenium库
⾸先你需要为⾃动化项⽬安装Selenium绑定。库的安装过程取决于你所选择使⽤的语⾔
Python
⽤pip为Python语⾔安装Selenium库
pip install selenium #通过终端安装
或者,你可以下载(ar.gz)并使⽤setup.py安装
python setup.py install
安装WebDriver⼆进制⽂件
要执⾏你的项⽬并控制浏览器,你需要安装特定浏览器的WebDriver⼆进制⽂件。
下载你的浏览器⽀持的并将其放在系统路径中。
安装独⽴服务器
如果你计划使⽤Grid,那么应该下载⽂件。所有组件都可以通过selenium服务器获得。独⽴JAR包含所有内容,包括远程Selenium服务器和客户端绑定。这意味着如果在项⽬中使⽤selenium服务器独⽴jar,则不必添加selenium java或特定于浏览器的jar。
<dependency>#??
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.X</version>
</dependency>
开始使⽤WebDriver
Selenium通过使⽤WebDriver⽀持市场上所有主要浏览器的⾃动化。WebDriver是⼀个API和协议,它定义了⼀个与语⾔⽆关的接⼝来控制web浏览器的⾏为。每个浏览器都有⼀个特定的WebDriver实现作为⽀持,称为驱动程序。驱动程序是负责向下委托给浏览器的组件,并处理与Selenium和浏览器之间的通信。
这种分离是让浏览器供应商负责实现浏览器的有意努⼒的⼀部分。Selenium在可能的情况下使⽤这些第三⽅驱动程序,但也提供了由项⽬维护的⾃⼰的驱动程序,以便在不现实的情况下使⽤。
Selenium框架通过⾯向⽤户的界⾯将所有这些部分连接在⼀起,使不同的浏览器后端能够透明地使⽤,从⽽实现跨浏览器和跨平台的⾃动化。
更多关于驱动程序的细节请参阅驱动程序特质。
浏览器
第三⽅驱动程序和插件
WebDriver
WebDriver像⽤户本地或使⽤Selenium服务器的远程计算机⼀样以本机地⽅式驱动浏览器,标志着浏览器⾃动化的飞跃,为了浏览器⾃动化标记⼀⼤步。
Selenium WebDriver 既指语⾔绑定,也指单个浏览器控制代码的实现。这通常仅称为WebDriver。
Selenium WedDriver 是W3C推荐的
WebDriver 被设计成简单并更简洁的编程界⾯
WebDriver 是⼀个紧凑的⾯向对象的应⽤程序接⼝
WebDriver 有效地驱动浏览器
了解组件
使⽤WebDriver构建测试套件需要你理解并有效地使⽤许多不同的组件。就像软件中的所有东西⼀样,不同的⼈对同⼀个想法使⽤不同的术语。下⾯是如何在这个描述中使⽤术语的细分条⽬。
术语
应⽤程序编程接⼝:这是⼀组⽤于操纵WebDriver的“命令”。
库:⼀个代码模块,包含APIs和实现它们所需的代码。库特定于每种语⾔绑定,例如.jar⽂件⽤于Java,.dll⽂件⽤于.NET等。
驱动程序:负责控制实际浏览器。⼤多数驱动程序都是由浏览器供应商⾃⼰创建的。驱动程序通常是通过浏览器本⾝在系统上运⾏的可执⾏模块,⽽不是在执⾏测试套件的系统上。(尽管它们可能是统⼀系统。)注意:有些⼈将驱动程序称为代理。
框架:⽤于⽀持WebDriver套件的附加库。这些框架可能是测试框架,⽐如JUnit或NUnit。它们也可能是⽀持⾃然语⾔特性的框架,⽐如Cucumber或Robotium。框架也可以被编写并⽤于操作或配置被测系统、数据创建、测试预⾔等。
零部件
⾄少,WebDriver通过驱动程序与浏览器对话。通信是双向的:WebDriver通过驱动程序将命令传递给浏览器,并通过相同的路径接收信息。
这个驱动程序是特定于浏览器的,⽐如ChromeDriver⽤于Google的Chrome/Chromium,GeckoDriver⽤于Mozilla的Firefox等等。这个驱动程序和浏览器运⾏在同⼀个系统上。这可能是,也可能不是,测试本⾝正在执⾏的同⼀个系统。
上⾯这个简单的例⼦就是直接交流。与浏览器的通信也可以是通过Selenium服务器或RemoteWebDriver进⾏的远程通信。RemoteWebDriver与驱动程序和浏览器在同⼀系统上运⾏。
远程通信也可以通过使⽤Selenium服务器或Selenium⽹格产⽣,服务器和Selenium⽹格反过来与主机系统上的驱动程序进⾏通信。
框架适⽤的地⽅
WebDriver有且仅有⼀项⼯作:通过上述任何⽅法与浏览器通信。WebDriver对测试⼀⽆所知:它不知道如何进⾏⽐较、断⾔pass或fail,当然也不知道关于报告或Given/When/Then语法的知识。
这就是各种框架发挥作⽤的地⽅。你⾄少需要⼀个与语⾔绑定相匹配的测试框架,例如NUnit 相对于.NET、JUnit 相对于 Java、RSpec 相对于 Ruby等等。
测试框架负责运⾏和执⾏WebDriver以及测试中的相关步骤。因此,您可以认为它看起来类似于下图。
⾃然语⾔框架/⼯具(如Cucumber)可能作为上图中测试框架框的⼀部分存在,或者它们可以将测试框架完全封装在⾃⼰的实现中。《驱动程序要求》
凭借WebDriver,Selenium⽀持市场上所有主要浏览器,如Chrom(ium)、Firefox、Internet Explorer、Opera和Safari。在可能的情况下,WebDriver使⽤浏览器内置的⾃动化⽀持来驱动浏览器,尽管并⾮所有浏览器都有官⽅的远程控制⽀持。
WebDriver的⽬标是尽可能地模拟真实⽤户与浏览器的交互。在不同的浏览器中,这在不同的级别上是可能的。有关不同驱动特质的更多详细信息,请参阅驱动特质。
尽管所有驱动程序共享⼀个⾯向⽤户的界⾯来控制浏览器,但它们设置浏览器会话的⽅式略有不同。由于许多驱动程序实现是由第三⽅提供的,因此它们不包括在标准的Selenium发⾏版中。
驱动程序实例化、配置⽂件管理和各种浏览器特定设置是根据浏览器具有不同要求的参数⽰例。本节介绍了开始使⽤不同浏览器的基本要求。
向路径中添加可执⾏⽂件
⼤多数驱动程序需要⼀个额外的可执⾏⽂件,以便Selenium与浏览器通信。你可以在启动WebDriver之前⼿动指定可执⾏⽂件的位置,但这会降低测试的可移植性,因为可执⾏⽂件需要在每台计算机上的同⼀位置,或者将可执⾏⽂件包含在测试代码存储库中。
通过将包含WebDriver⼆进制⽂件的⽂件夹添加到系统路径中,Selenium将能够定位其他⼆进制⽂件,⽽⽆需测试代码来定位驱动程序的确切位置。
创建⼀个⽬录来放置可执⾏⽂件,如C:\WebDriver\bin 或 /opt/WebDriver/bin
将⽬录添加到你的路径:
macOS和Linux上的Bash⽤户-在终端中:
export PATH=$PATH:/opt/WebDriver/bin>>~/.profile # export⽤于设置或显⽰环境变量;>>的意思是将输出内容追加到⽬标⽂件中。如果⽂件不存在,就创建⽂件;如果⽂件存在,则将新的内容追加到那个⽂件的末尾,该⽂件中的原有内容不受影响。
现在可以测试你所做的更改了。关闭所有“打开”命令提⽰,然后打开⼀个新提⽰。在上⼀步中创建的⽂件夹中键⼊其中⼀个⼆进制⽂件的名称,例如:chromedriver
如果Path配置正确,你将看到⼀些与驱动程序启动相关的输出:
Starting ChromeDriver 2.25.426935(820a95b0b81d33e42712f9198c215f703412e1a1) on port 9515
Only local connections are allowed.
按Ctrl+C可以重新控制命令提⽰符
快速参考
Browser Supported OS Maintained by Download Issue Tracker FireFox Windows/macOS/Linux Mozilla
Safari macOS EI Capitan and newer Apple Built in
快速参考
Firefox
从Selenium 3开始,Mozilla已经接管了Firefox驱动程序的实现,使⽤geckodriver。Firefox的新驱动程序名为geckodriver,适⽤于Firefox 48及更⾼版本。由于Firefox WebDriver正在开发中,Firefox版本越新,⽀持就越好。
由于geckodriver是启动Firefox的新默认⽅式,你可以⽤与Selenium 2相同的⽅式实例化Firefox(基于Python):
#Simple assignment
from selenium.webdriver import Firefox
driver = Firefox()
#Or use the context manager
from selenium.webdriver import Firefox
with Firefox()as driver:
#your code inside this indent
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论