`
fangyinhui
  • 浏览: 13675 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

webdriver3

 
阅读更多

Selenium2.0之WebDriver学习总结(3)  

来自lvzeting   2012-03-06 10:27:25|  分类: 自动化测试|字号 订阅

 
 

接下来将通过几个具体的例子来使用操作上述功能,以下代码都是通过junit框架编写。

例子1:该例子主要是登录网易相册,创建一个私人相册,并进入相册进行评论,然后删除这个相册。在这个例子中,可以找到各种方式定位元素方法的具体实例:

package demo;

import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.Select;

publicclassDemoElement1{

privateWebDriver driver;
privateString baseUrl;

@Before
publicvoid setUp()throwsException{
driver =newFirefoxDriver();
baseUrl ="http://photo.163.com/";
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}

@Test
publicvoid test()throwsException{
//打开一个网址
driver.get(baseUrl);
//输入用户名
//by css
driver.findElement(By.cssSelector("input[name=\"username\"]")).clear();
driver.findElement(By.cssSelector("input[name=\"username\"]")).sendKeys("demophoto");
driver.findElement(By.cssSelector("div.js-cur")).click();
//输入密码
//by name
driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("qa1234");
//点击登录
//by id
driver.findElement(By.id("photo_index_login")).click();
//获取页面title
//by js
JavascriptExecutor js =(JavascriptExecutor) driver;
String title =(String)js.executeScript("return document.title");
System.out.println(title);
//点击 创建相册
//by linkText
driver.findElement(By.linkText("创建相册")).click();
//输入 相册名称
//by name
driver.findElement(By.name("name")).clear();
driver.findElement(By.name("name")).sendKeys("new album");
//选择私人相册
//by id
driver.findElements(By.name("auth")).get(3).click();
//选择aaa分类
//by css
Selectselect=newSelect(driver.findElement(By.cssSelector("select.fc5.bdwa")));
//选择的三种不同实现
//select.selectByValue("aaa");
//select.selectByIndex(1);
select.selectByVisibleText("aaa");
//点击 创建 两种方式
//by css
driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).click();
//driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).submit();
Thread.sleep(5000);
//输入评论
//因为评论框放在一个iframe中,所以要切换到iframe中,结束后将焦点切换回去
//by tagName
driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
driver.switchTo().activeElement().sendKeys("评论内容!");
driver.switchTo().defaultContent();
//点击 发表
//by className
driver.findElement(By.className("ui-btn-main0")).click();
//点击 返回
//by xpath
driver.findElement(By.xpath("//a[@class='back' and (text()='<< 返回')]")).click();
//鼠标hover到相册上(目前firefoxDriver的鼠标事件还是有缺陷的,运行这代码的时候请确保光标在浏览器内)
//by partialLinkText
newActions(driver).moveToElement(driver.findElement(By.partialLinkText("new album"))).build().perform();
//点击 删除
//by linkText
driver.findElement(By.linkText("删除")).click();
//点击确认
driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).click();
//退出登录
//by id
driver.findElement(By.id("headerLogout")).click();
//浏览器后退
driver.navigate().back();
}

@After
publicvoid tearDown()throwsException{
driver.quit();
}

}


例子2:该主要是登录网易群相册上传修改个人头像。在这个例子中,可以找到如何通过上传空间进行上传操作:

package demo;

import java.io.File;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

publicclassDemoElement2{
privateWebDriver driver;
privateString baseUrl;
@Before
publicvoid setUp()throwsException{
driver =newFirefoxDriver();
baseUrl ="http://photo.163.com/";
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}
@Test
publicvoid test1111()throwsException{
driver.get(baseUrl +"/q/690000");
driver.findElement(By.linkText("[马上登录]")).click();
driver.findElement(By.name("username")).clear();
driver.findElement(By.name("username")).sendKeys("demophoto");
driver.findElement(By.cssSelector("div.js-cur")).click();
driver.findElement(By.cssSelector("td > input[name=\"password\"]")).clear();
driver.findElement(By.cssSelector("td > input[name=\"password\"]")).sendKeys("qa1234");
driver.findElement(By.name("login")).click();
driver.findElement(By.id("J-set-account")).click();
File file =newFile(".\\res\\1.jpg");

//获取需要上传照片的绝对地址
String filepath = file.getCanonicalPath();
//上传控件操作
driver.findElement(By.id("J-account-file")).sendKeys(filepath);
Thread.sleep(10000);
driver.findElement(By.cssSelector("span.inside")).click();
driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).click();
driver.findElement(By.linkText("返回>>")).click();
driver.findElement(By.linkText("退出")).click();
}
@After
publicvoid tearDown()throwsException{
driver.quit();
}

}

 
例子3:该主要是登录网易群相册进行拖动排序。通过这个例子我们可以学习如何实现浏览器中鼠标拖动事件:

package demo;
import java.util.concurrent.TimeUnit;
import org.junit.*;
importstatic org.junit.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;

publicclassDemoElement3{
privateWebDriver driver;
privateString baseUrl;
privateStringBuffer verificationErrors =newStringBuffer();
@Before
publicvoid setUp()throwsException{
driver =newFirefoxDriver();
baseUrl ="http://photo.163.com/";
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
}

@Test
publicvoid test()throwsException{
driver.get(baseUrl +"/");
driver.findElement(By.name("username")).clear();
driver.findElement(By.name("username")).sendKeys("demophoto");
driver.findElement(By.cssSelector("div.js-cur")).click();
driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("qa1234");
driver.findElement(By.id("photo_index_login")).click();
driver.findElement(By.partialLinkText("排序相册")).click();
driver.findElement(By.cssSelector("#J-photoListSort > span.title")).click();
driver.findElement(By.linkText("自定义排序")).click();
//拖动图片
(newActions(driver)).dragAndDrop(driver.findElement(By.id("7515773989")), driver.findElement(By.id("7515803792"))).perform();
driver.findElement(By.linkText("确定排序")).click();
Thread.sleep(10000);
driver.findElement(By.cssSelector("#J-photoListSort > span.title")).click();
driver.findElement(By.linkText("新相片在前")).click();

}

@After
publicvoid tearDown()throwsException{
driver.quit();
String verificationErrorString = verificationErrors.toString();
if(!"".equals(verificationErrorString)){
fail(verificationErrorString);
}
}

privateboolean isElementPresent(Byby){
try{
driver.findElement(by);
returntrue;
}catch(NoSuchElementException e){
returnfalse;
}
}
}

分享到:
评论

相关推荐

    selenium webdriver 3 practical guide 第二版

    Selenium WebDriver 3 Practical Guide will walk you through the various APIs of Selenium WebDriver, which are used in automation tests, followed by a discussion of the various WebDriver implementations...

    Selenium WebDriver 3 Practical Guide 2nd.Edition 2018年9月最新版本 文字可拷贝

    Selenium WebDriver 3 Practical Guide 2nd.Edition 2018年9月最新版本 文字可拷贝

    Mastering Selenium WebDriver 3

    Mastering Selenium WebDriver 3, telling us how to use the Selenium WebDriver to automate webt testing and crawl web page which is heavy javascript.

    Selenium WebDriver实战宝典(吴晓华)

    WebDriver 的常用API使用方法,第3部分自动化测试框架搭建篇深入讲解了页面对象的设计模式以及分布式并发执行测试框架、数据驱动测试框架、行为驱动测试框架和关键字驱动测试框架的实例源码。第4部分为常见问题和姐...

    Selenium.WebDriver.3.141.0

    压缩包中的文件“Selenium.WebDriver.3.141.0”很可能包含了Selenium WebDriver的.NET Framework绑定,这是一组库,使.NET开发者可以直接在他们的代码中调用WebDriver API。通常,这个包会包括WebDriver的DLL文件、...

    Selenium WebDriver实战(JAVA版本)

    selenium webdriver是web自动化的一本经典著作,吴老集合python java不同版本。本资源为java版本,内容较新,无论是入门还是提升都有很大帮助。

    webdriver实用指南java版本

    很实用的webdriver教程,乙醇力作,java版的webdriver!很详细很全面!

    WebDriver实验版VB6版WebDriver实验,压缩包中有技术文档《WebDriver原理及实验》

    3. **VB6中的WebDriver集成**:文档可能详细解释如何在VB6项目中引入WebDriver库,设置正确的引用,以及如何编写VB6代码来启动浏览器、导航到URL、操作DOM元素(如点击按钮、输入文本等)。 4. **WebDriver API**:...

    webdriver API中文版

    3. **设置 Firefox Profile**:可以通过 Remote WebDriver 配置 Firefox 的用户配置文件。 ### 第5章:封装与重用 这一章主要讨论如何将 WebDriver 代码进行模块化,创建可重用的函数或类,提高测试代码的可维护性...

    Chrome浏览器和版本配套webdriver 114

    3. 使用命令行启动Chrome:在启动Chrome时添加`--disable-update`或`--no-first-run`参数,这可以临时阻止自动更新。 4. 修改注册表:在Windows注册表中找到Google更新相关的键值,并禁用自动更新。 在进行这些操作...

    WebDriver

    WebDriver 是一个用于自动化浏览器操作的接口,它是Web测试领域中的一个重要工具。WebDriver允许开发者编写脚本,模拟用户在浏览器上的各种交互行为,如点击、输入、导航等,从而实现对Web应用的功能验证和性能测试...

    webdriver模拟火狐firefox浏览器

    3. Firefox Profile:为了配置Firefox的行为,我们可以创建一个Firefox Profile。这可以用来设置启动参数、插件状态、首选项等。在WebDriver中,我们可以通过Profile对象来定制我们的浏览器设置。 4. WebDriver API...

    php-webdriver-bindings.rar_php-webdriver

    3. **启动会话**:创建一个新的 WebDriver 会话,实例化对应浏览器的 WebDriver 对象。 4. **导航和操作**:使用 WebDriver 对象的方法,如 `get()` 跳转到指定 URL,`findElement()` 查找页面元素,`click()` 点击...

    WebDriver命令参考手册

    WebDriver 命令参考手册 WebDriver 命令参考手册是 WebDriver 的一个重要组件,提供了 WebDriver 的命令参考手册。该手册详细介绍了 WebDriver 的各种命令和协议,旨在帮助开发者更好地理解和使用 WebDriver。 ...

    Python库 | webdriver_manager-1.5.1-py2.py3-none-any.whl

    这个压缩包文件`webdriver_manager-1.5.1-py2.py3-none-any.whl`包含了适用于Python 2和3版本的库,无需用户手动下载或配置WebDriver的特定版本。 `webdriver_manager`库的核心功能在于简化了Selenium WebDriver的...

    ChromeWebdriver-win64

    Selenium WebDriver是Selenium 3.x的核心,它提供了一个跨浏览器的API,允许开发者编写代码来控制浏览器,执行各种网页交互,如点击按钮、填写表单、模拟用户输入等。ChromeDriver是这个框架的一部分,它是一个...

    Selenium WebDriver 所需jar包

    3. **Selenium Server**:虽然不是所有情况下都需要,但Selenium Server(如Selenium Grid)可以用于分布式测试,允许多个浏览器实例在同一时间运行测试,提高测试效率。如果在大型项目中使用,可能会包含对应的jar...

    WebDriver(Chrome、IE、Edge、FireFox)

    3. **Edge WebDriver**,随着Microsoft推出基于Chromium的新版Edge浏览器,现在的Edge WebDriver也称为MicrosoftWebDriver。它允许对Edge浏览器进行自动化测试。对于新Edge,下载对应的WebDriver并与Chromium版本...

    webdriver的chromedriver.exe

    WebDriver是一种开源的自动化测试框架,它允许程序员通过编程方式控制Web浏览器进行自动化操作,例如点击按钮、填写表单、导航等。在IT行业中,WebDriver被广泛应用于软件测试,特别是Web应用的端到端测试,以及数据...

Global site tag (gtag.js) - Google Analytics