该命令会下载 Selenium 和其所有依赖,并添加到这个项目中。
最后,将项目导入到你的 IDE。对于不太熟悉 IDE 的用户,我们提供了附件来说明相关内容。
Importing a maven project into IntelliJ IDEA
Importing a maven project into Eclipse
[
从 Selenium 1.0 迁移###
对于那些已经使用 Selenium 1.0 编写测试套件的用户,我们提供了一些迁移的建议。Selenium 2.0 的核心
工程师 Simon Stewart 写了一篇关于从 Selenium 1.0 迁移的文章,包含在本文的附件中。
Migrating From Selenium RC to Selenium WebDriver
[
实例介绍 Selenium-WebDriver API###
WebDriver 是一个进行 web 应用测试自动化的工具,主要用于验证它们的行为是否符合期望。WebDriver
的目标是提供一套易于掌握的 API,且比 Selenium-RC (1.0) 更易于使用,页能是你的测试更具可读性和维
护性。它没有同任何特定的测试框架进行绑定,所以可以在单元测试或者是 main 方法中工作良好。本小节
介绍 WebDriver API,并且帮助你熟悉它。如果你还没有任何 WebDriver 项目,请按照上一小节的介绍新
建一个。
建好项目后,你可以发现 WebDriver 和任何普通的库一样:它是自包含的,通常不需要进行任何额外的处
理或者运行安装。这一点和 Selenium-RC 的代理服务器是不一样的。
注意: 使用 Chrome Driver、 Opera Driver、Android Driver 和 iPhone Driver 是需要一些额外操作的。
我们准备了一个简单的例子:在 Google 上搜索 “Cheese”,然偶输出搜索结果页的页面标题到 console。
包括操作系统和浏览器在内的多种因素影响,WebDriver 可能会也可能不会等待页面加载。在某些情况下,
WebDriver可能在页面加载完毕前就返回控制了,甚至是开始加载之前。为了确保健壮性,你需要使用 E
xplicit and Implicit Waits 等到页面元素可用。
查找 UI 元素(web 元素)####
WebDriver 实例可以查找 UI 元素。每种语言实现都暴露了 “查找单个元素” 和 “查找所有元素” 的方法。
第一个方法如果找到则返回该元素,如果没找到则抛出异常。第二种如果找到则返回一个包含所有元素
的列表,如果没找到则返回一个空数组。
“查找” 方法使用了一个定位器或者一个叫 “By” 的查询对象。“By” 支持的元素查找策略如下:
By id
这是最高效也是首选的方法用于查找一个元素。UI 开发人员常犯的错误是,要么没有指定 id,要么自动
生成随机 id,这两种情况都应避免。及时是使用 class 也比使用自动生成随机 id 要好的多。
HTML:
<div id="coolestWidgetEvah">...</div>
Java:
WebElement element = driver.findElement(By.id("coolestWidgetEvah"));
By Class Name
"class" 是 DOM 元素上的一个属性。在实践中,通常是多个 DOM 元素有同样的 class 名,所以通常用它
来查找多个元素。
HTML:
<div class="cheese"><span>Cheddar</span></div><div class="cheese"><span>Gouda</span></div>
// 你可以通过3中方式删除 cookie
// By name
driver.manage().deleteCookieNamed("CookieName");
// By Cookie
driver.manage().deleteCookie(loadedCookie);
// Or all of them
driver.manage().deleteAllCookies();
####改变 UA####
当使用 Firefox Driver 的时候这很容易:
`
FirefoxProfile profile = new FirefoxProfile();
profile.addAdditionalPreference("general.useragent.override", "some UA string");
WebDriver driver = new FirefoxDriver(profile);`
// Get the underlying WebDriver implementation back. This will refer to the
// same WebDriver instance as the "driver" variable above.
WebDriver driverInstance = ((WebDriverBackedSelenium) selenium).getWrappedDriver();