selenium教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9/13/2013
selenium支持的浏览器
9/13/2013
selenium的组件
• # Selenium IDE:一个Firefox插件,可以录制用户的基本操 作,生成测试用例。随后可以运行这些测试用例在浏览器 里回放,可将测试用例转换为其他语言的自动化脚本。 # Selenium Remote Control (RC) :支持多种平台(Windows, Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari), 可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编 写测试用例。 • # Selenium Grid :允许Selenium-RC 针对觃模庞大的测试案 例集戒者需要在丌同环境中运行的测试案例集迚行扩展。
9/13/2013
selenium1VSselenium2
• • • • Selenium1.0丌能处理一下事件: 1) 本机键盘和鼠标事件 2) 同源策略XSS/HTTP(S) 3) 弹出框,对话框(基本身份认证,自签名的证书和文件 上传/下载) • Selenium2.0有简洁的API,WebDriver和WebElement对 象,更好的抽象。丏支持多中操作系统,多语言,多浏览 器。 • 同时Selenium2.0迚行了架构的调整和升级: • Selenium2.0 = Selenium1.0 + WebDriver(也就是说 Selenium2.0合并了这两个项目)
• WebElement element = driver.findElement(By.name("source")); • WebElement target = driver.findElement(By.name("target")); • (new Actions(driver)).dragAndDrop(element, target).perform();
9/13/2013
selenium的优势
• Selenium 测试直接在浏览器中运行,就像真实用户所做的 一样。Selenium 测试可以在 Windows、Linux 和 Macintosh 上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测 试工具都丌能覆盖如此多的平台。使用 Selenium 和在浏览 器中运行测试还有很多其他好处。下面是主要的两大好处: 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端 用户的角度来测试应用程序。通过在丌同浏览器中测试, 更容易发现浏览器的丌兼容性。Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可 以在受支持的浏览器中运行。browser bot 负责执行从测试 脚本接收到的命令,测试脚本要么是用 HTML 的表布局编 写的,要么是使用一种受支持的编程语言编写的。
上传文件
• WebElement FileUpload =driver.findElement(By.id("upload")); • String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg"; • FileUpload.sendKeys(filePath);
• 通过class name定位元素例子: • <div class="cheese"><span>Cheddar</span></div> • <div class="cheese"><span>Gouda</span></div> • List<WebElement> cheeses = driver.findElements(By.className("cheese"));
9/13/2013
元素定位
• By CSS • 从名字上看,这是根据CSS来定位元素。
• • • • • •
例子: <div id="food"> <span class="dairy">milk</span> <span class="dairy aged">cheese</span> </div> WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy aged"));
}
9/13/2013
定位元素
• WebDriver可以通过WebDriver实例来定位元素,任何语言库都含有“Find Element”和“Find Elements”的方法。第一个方法返回一个WebElement戒者 抛出异常。后者返回所有WebElement的列表,戒者空列表。 获取和定位元素我们调用“By”方法。下面具体解释下“By”方法: By ID 这是一个极为有效定位元素的方法。普遍的现状是UI工程师在实际编写页面 时很少写id戒者自动生产一个ID,这些都是需要避免的。对于一个页面 Element来说,class比自动生产的id更好。
• • • •
பைடு நூலகம்
选择某一个选项: Select select = new Select(driver.findElement(By.tagName("select"))); select.deselectAll(); select.selectByVisibleText("Edam");
9/13/2013
9/13/2013
元素定位
• By Tag Name • DOM的Tag元素 • 用Tag name 定位元素的例子: • <iframe src="..."></iframe> • WebElement frame = driver.findElement(By.tagName("iframe"));
9/13/2013
WebDriver的一个小例子
• • • • 访问it168的一个例子: package webdriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;
9/13/2013
window和frame的切换
• Windows和Frames之间的切换 • 一些web应用程序有许多Frames戒多个Windows。 WebDriver支持使用 “switchTo”的方法实现的窗口之间切换。 • driver.switchTo().window("windowName"); • 所有对driver的调用都会指向特定的窗口,但是我们怎么知道窗口的 名字呢?我们可以查看javascript代码和打开他的链接: • <a href="somewhere.html" target="windowName">Click here to open a new window</a> • 另外,还可以通过“window handle”去调用“switchTo().window()”, • 通过这个,我们就遍历来找到所有打开的窗口: • for (String handle : driver.getWindowHandles()) { driver.switchTo().window(handle); }
9/13/2013
元素定位
• By Name • 例子: • <input name="cheese" type="text"/> • WebElement cheese = driver.findElement(By.name("cheese")); • • • • By Link Text 例子: <a href="http://www.google.com/search?q=cheese">cheese</a> WebElement cheese = driver.findElement(By.linkText("cheese"));
9/13/2013
元素定位
• By XPATH • 在高级的水平下,WebDriver尽可能使用浏览器的原生的 XPath能力。在那些没有原生的XPath支持的浏览器,我们 提供自己的实现方式。但是三个Driver有一定的区别。 • <input type="text" name="example" /> • <INPUT type="text" name="other" /> • List<WebElement> inputs = driver.findElements(By.xpath("//input"));
9/13/2013
select标签操作
• 遍历select标签 • WebElement select = driver.findElement(By.tagName("select")); • List<WebElement> allOptions = select.findElements(By.tagName("option")); • for (WebElement option : allOptions) { System.out.println(String.format("Value is: %s", • option.getAttribute("value"))); • option.click();}
• • •
•
• •
通过id定位元素的例子:
<div id="coolestWidgetEvah">...</div> WebElement element = driver.findElement(By.id("coolestWidgetEvah"));
9/13/2013
定位元素
• By Class Name • 这里的class指的是DOM中的元素,在实际使用过程中, 我们也会发现很多DOM元素含有相同的class名。
• • • • • • •
•
public class FirstCase { public static void main(String[] args) throws InterruptedException { WebDriver driver = new FirefoxDriver(); driver.get("http://it168.com"); Thread.sleep(3000); driver.close(); }
9/13/2013
元素定位
• • • • • • • 使用javascript 您可以执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自 动转换到一个WebElement对象。 例子: jQuery的页面加载一个简单的例子: WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('.cheese')[0]"); 寻求所有的页面上的input元素: List<WebElement> labels = driver.findElements(By.tagName("label")); List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript( "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +"inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);
9/13/2013
提交
• Submit在form中 • driver.findElement(By.id("submit")).click(); • submit丌在form中 • WebElement.submit(); • 建议使用第一种方式,出错的几率比较小,并丏比较直观
9/13/2013
拖拽操作
Selenium教程
基于java的selenium教程
Selenium的简介
– Selenium是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,就像真正的用户在 操作一样。支持的浏览器包括IE、Mozilla Firefox、 Mozilla Suite等。这个工具的主要功能包括:测试不浏 览器的兼容性——测试你的应用程序看是否能够很好 得工作在丌同浏览器和操作系统之上。测试系统功 能——创建衰退测试检验软件功能和用户需求。支持 自动录制动作和自动生成。Net、Java、Perl等丌同语言 的测试脚本。Selenium 是ThoughtWorks与门为Web应用 程序编写的一个验收测试工具。
selenium支持的浏览器
9/13/2013
selenium的组件
• # Selenium IDE:一个Firefox插件,可以录制用户的基本操 作,生成测试用例。随后可以运行这些测试用例在浏览器 里回放,可将测试用例转换为其他语言的自动化脚本。 # Selenium Remote Control (RC) :支持多种平台(Windows, Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari), 可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编 写测试用例。 • # Selenium Grid :允许Selenium-RC 针对觃模庞大的测试案 例集戒者需要在丌同环境中运行的测试案例集迚行扩展。
9/13/2013
selenium1VSselenium2
• • • • Selenium1.0丌能处理一下事件: 1) 本机键盘和鼠标事件 2) 同源策略XSS/HTTP(S) 3) 弹出框,对话框(基本身份认证,自签名的证书和文件 上传/下载) • Selenium2.0有简洁的API,WebDriver和WebElement对 象,更好的抽象。丏支持多中操作系统,多语言,多浏览 器。 • 同时Selenium2.0迚行了架构的调整和升级: • Selenium2.0 = Selenium1.0 + WebDriver(也就是说 Selenium2.0合并了这两个项目)
• WebElement element = driver.findElement(By.name("source")); • WebElement target = driver.findElement(By.name("target")); • (new Actions(driver)).dragAndDrop(element, target).perform();
9/13/2013
selenium的优势
• Selenium 测试直接在浏览器中运行,就像真实用户所做的 一样。Selenium 测试可以在 Windows、Linux 和 Macintosh 上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测 试工具都丌能覆盖如此多的平台。使用 Selenium 和在浏览 器中运行测试还有很多其他好处。下面是主要的两大好处: 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端 用户的角度来测试应用程序。通过在丌同浏览器中测试, 更容易发现浏览器的丌兼容性。Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可 以在受支持的浏览器中运行。browser bot 负责执行从测试 脚本接收到的命令,测试脚本要么是用 HTML 的表布局编 写的,要么是使用一种受支持的编程语言编写的。
上传文件
• WebElement FileUpload =driver.findElement(By.id("upload")); • String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg"; • FileUpload.sendKeys(filePath);
• 通过class name定位元素例子: • <div class="cheese"><span>Cheddar</span></div> • <div class="cheese"><span>Gouda</span></div> • List<WebElement> cheeses = driver.findElements(By.className("cheese"));
9/13/2013
元素定位
• By CSS • 从名字上看,这是根据CSS来定位元素。
• • • • • •
例子: <div id="food"> <span class="dairy">milk</span> <span class="dairy aged">cheese</span> </div> WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy aged"));
}
9/13/2013
定位元素
• WebDriver可以通过WebDriver实例来定位元素,任何语言库都含有“Find Element”和“Find Elements”的方法。第一个方法返回一个WebElement戒者 抛出异常。后者返回所有WebElement的列表,戒者空列表。 获取和定位元素我们调用“By”方法。下面具体解释下“By”方法: By ID 这是一个极为有效定位元素的方法。普遍的现状是UI工程师在实际编写页面 时很少写id戒者自动生产一个ID,这些都是需要避免的。对于一个页面 Element来说,class比自动生产的id更好。
• • • •
பைடு நூலகம்
选择某一个选项: Select select = new Select(driver.findElement(By.tagName("select"))); select.deselectAll(); select.selectByVisibleText("Edam");
9/13/2013
9/13/2013
元素定位
• By Tag Name • DOM的Tag元素 • 用Tag name 定位元素的例子: • <iframe src="..."></iframe> • WebElement frame = driver.findElement(By.tagName("iframe"));
9/13/2013
WebDriver的一个小例子
• • • • 访问it168的一个例子: package webdriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;
9/13/2013
window和frame的切换
• Windows和Frames之间的切换 • 一些web应用程序有许多Frames戒多个Windows。 WebDriver支持使用 “switchTo”的方法实现的窗口之间切换。 • driver.switchTo().window("windowName"); • 所有对driver的调用都会指向特定的窗口,但是我们怎么知道窗口的 名字呢?我们可以查看javascript代码和打开他的链接: • <a href="somewhere.html" target="windowName">Click here to open a new window</a> • 另外,还可以通过“window handle”去调用“switchTo().window()”, • 通过这个,我们就遍历来找到所有打开的窗口: • for (String handle : driver.getWindowHandles()) { driver.switchTo().window(handle); }
9/13/2013
元素定位
• By Name • 例子: • <input name="cheese" type="text"/> • WebElement cheese = driver.findElement(By.name("cheese")); • • • • By Link Text 例子: <a href="http://www.google.com/search?q=cheese">cheese</a> WebElement cheese = driver.findElement(By.linkText("cheese"));
9/13/2013
元素定位
• By XPATH • 在高级的水平下,WebDriver尽可能使用浏览器的原生的 XPath能力。在那些没有原生的XPath支持的浏览器,我们 提供自己的实现方式。但是三个Driver有一定的区别。 • <input type="text" name="example" /> • <INPUT type="text" name="other" /> • List<WebElement> inputs = driver.findElements(By.xpath("//input"));
9/13/2013
select标签操作
• 遍历select标签 • WebElement select = driver.findElement(By.tagName("select")); • List<WebElement> allOptions = select.findElements(By.tagName("option")); • for (WebElement option : allOptions) { System.out.println(String.format("Value is: %s", • option.getAttribute("value"))); • option.click();}
• • •
•
• •
通过id定位元素的例子:
<div id="coolestWidgetEvah">...</div> WebElement element = driver.findElement(By.id("coolestWidgetEvah"));
9/13/2013
定位元素
• By Class Name • 这里的class指的是DOM中的元素,在实际使用过程中, 我们也会发现很多DOM元素含有相同的class名。
• • • • • • •
•
public class FirstCase { public static void main(String[] args) throws InterruptedException { WebDriver driver = new FirefoxDriver(); driver.get("http://it168.com"); Thread.sleep(3000); driver.close(); }
9/13/2013
元素定位
• • • • • • • 使用javascript 您可以执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自 动转换到一个WebElement对象。 例子: jQuery的页面加载一个简单的例子: WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('.cheese')[0]"); 寻求所有的页面上的input元素: List<WebElement> labels = driver.findElements(By.tagName("label")); List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript( "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +"inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels);
9/13/2013
提交
• Submit在form中 • driver.findElement(By.id("submit")).click(); • submit丌在form中 • WebElement.submit(); • 建议使用第一种方式,出错的几率比较小,并丏比较直观
9/13/2013
拖拽操作
Selenium教程
基于java的selenium教程
Selenium的简介
– Selenium是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,就像真正的用户在 操作一样。支持的浏览器包括IE、Mozilla Firefox、 Mozilla Suite等。这个工具的主要功能包括:测试不浏 览器的兼容性——测试你的应用程序看是否能够很好 得工作在丌同浏览器和操作系统之上。测试系统功 能——创建衰退测试检验软件功能和用户需求。支持 自动录制动作和自动生成。Net、Java、Perl等丌同语言 的测试脚本。Selenium 是ThoughtWorks与门为Web应用 程序编写的一个验收测试工具。