51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1302|回复: 1
打印 上一主题 下一主题

【转帖】Selenium2.0之WebDriver学习总结(3)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-7-13 10:53:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接下来将通过几个具体的例子来使用操作上述功能,以下代码都是通过junit框架编写。
例子1:
该例子主要是登录网易相册,创建一个私人相册,并进入相册进行评论,然后删除这个相册。在这个例子中,可以找到各种方式定位元素方法的具体实例:
CODE:
  1. <font size="4">package demo;

  2. import java.util.concurrent.TimeUnit;
  3. import org.junit.*;
  4. import org.openqa.selenium.*;
  5. import org.openqa.selenium.firefox.FirefoxDriver;
  6. import org.openqa.selenium.interactions.Actions;
  7. import org.openqa.selenium.support.ui.Select;

  8. public class DemoElement1 {

  9.     private WebDriver driver;
  10.     private String baseUrl;

  11.     @Before
  12.     public void setUp() throws Exception {
  13.        driver = new FirefoxDriver();
  14.        baseUrl = "http://photo.163.com/";
  15.        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  16.     }

  17.     @Test
  18.     public void test() throws Exception {
  19.        //打开一个网址
  20.        driver.get(baseUrl);
  21.        //输入用户名
  22.        //by css
  23.        driver.findElement(By.cssSelector("input[name=\"username\"]")).clear();
  24.        driver.findElement(By.cssSelector("input[name=\"username\"]")).sendKeys("demophoto");
  25.        driver.findElement(By.cssSelector("div.js-cur")).click();
  26.        //输入密码
  27.        //by name
  28.        driver.findElement(By.name("password")).clear();
  29.        driver.findElement(By.name("password")).sendKeys("qa1234");
  30.        //点击登录
  31.        //by id
  32.        driver.findElement(By.id("photo_index_login")).click();
  33.        //获取页面title
  34.        //by js
  35.        JavascriptExecutor js = (JavascriptExecutor) driver;
  36.        String title = (String)js.executeScript("return document.title");
  37.        System.out.println(title);
  38.        //点击 创建相册
  39.        //by linkText
  40.        driver.findElement(By.linkText("创建相册")).click();
  41.        //输入 相册名称
  42.        //by name
  43.        driver.findElement(By.name("name")).clear();
  44.        driver.findElement(By.name("name")).sendKeys("new album");
  45.        //选择私人相册
  46.        //by id
  47.        driver.findElements(By.name("auth")).get(3).click();
  48.        //选择aaa分类
  49.        //by css
  50.        Select select = new Select(driver.findElement(By.cssSelector("select.fc5.bdwa")));
  51.        //选择的三种不同实现
  52.        //select.selectByValue("aaa");
  53.        //select.selectByIndex(1);
  54.        select.selectByVisibleText("aaa");
  55.        //点击 创建 两种方式
  56.        //by css
  57.        driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).click();
  58.        //driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).submit();
  59.        Thread.sleep(5000);
  60.        //输入评论
  61.        //因为评论框放在一个iframe中,所以要切换到iframe中,结束后将焦点切换回去
  62.        //by tagName
  63.        driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
  64.        driver.switchTo().activeElement().sendKeys("评论内容!");
  65.        driver.switchTo().defaultContent();   
  66.        //点击 发表
  67.        //by className
  68.        driver.findElement(By.className("ui-btn-main0")).click();   
  69.        //点击 返回
  70.        //by xpath
  71.        driver.findElement(By.xpath("//a[@class='back' and (text()='<< 返回')]")).click();
  72.        //鼠标hover到相册上(目前firefoxDriver的鼠标事件还是有缺陷的,运行这代码的时候请确保光标在浏览器内)
  73.        //by partialLinkText      
  74.        new Actions(driver).moveToElement(driver.findElement(By.partialLinkText("new album"))).build().perform();
  75.        //点击 删除
  76.        //by linkText
  77.        driver.findElement(By.linkText("删除")).click();
  78.        //点击确认
  79.        driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).click();
  80.        //退出登录
  81.        //by id   
  82.        driver.findElement(By.id("headerLogout")).click();
  83.        //浏览器后退
  84.        driver.navigate().back();
  85.     }
  86.      
  87.     @After
  88.     public void tearDown() throws Exception {
  89.        driver.quit();
  90.     }

  91. }</font>
复制代码
例子2:
该主要是登录网易群相册上传修改个人头像。在这个例子中,可以找到如何通过上传空间进行上传操作:
CODE:
  1. <font size="4">package demo;

  2. import java.io.File;
  3. import java.util.concurrent.TimeUnit;
  4. import org.junit.*;
  5. import org.openqa.selenium.*;
  6. import org.openqa.selenium.firefox.FirefoxDriver;

  7. public class DemoElement2 {
  8. private WebDriver driver;
  9. private String baseUrl;
  10. @Before
  11. public void setUp() throws Exception {
  12.   driver = new FirefoxDriver();
  13.   baseUrl = "http://photo.163.com/";
  14.   driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  15. }
  16. @Test
  17. public void test1111() throws Exception {
  18.   driver.get(baseUrl + "/q/690000");
  19.   driver.findElement(By.linkText("[马上登录]")).click();
  20.   driver.findElement(By.name("username")).clear();
  21.   driver.findElement(By.name("username")).sendKeys("demophoto");
  22.   driver.findElement(By.cssSelector("div.js-cur")).click();
  23.   driver.findElement(By.cssSelector("td > input[name=\"password\"]")).clear();
  24.   driver.findElement(By.cssSelector("td > input[name=\"password\"]")).sendKeys("qa1234");
  25.   driver.findElement(By.name("login")).click();
  26.   driver.findElement(By.id("J-set-account")).click();
  27.   File file = new File(".\\res\\1.jpg");

  28.   //获取需要上传照片的绝对地址
  29.   String filepath = file.getCanonicalPath();
  30.   //上传控件操作
  31.   driver.findElement(By.id("J-account-file")).sendKeys(filepath);
  32.   Thread.sleep(10000);
  33.   driver.findElement(By.cssSelector("span.inside")).click();
  34.   driver.findElement(By.cssSelector("button.ui-btn.ui-btn-sub0")).click();
  35.   driver.findElement(By.linkText("返回>>")).click();
  36.   driver.findElement(By.linkText("退出")).click();
  37. }
  38. @After
  39. public void tearDown() throws Exception {
  40.   driver.quit();
  41. }

  42. }</font>
复制代码
例子3:
该主要是登录网易群相册进行拖动排序。通过这个例子我们可以学习如何实现浏览器中鼠标拖动事件:
CODE:
  1. package demo;
  2. import java.util.concurrent.TimeUnit;
  3. import org.junit.*;
  4. import static org.junit.Assert.*;
  5. import org.openqa.selenium.*;
  6. import org.openqa.selenium.firefox.FirefoxDriver;
  7. import org.openqa.selenium.interactions.Actions;

  8. public class DemoElement3 {
  9. private WebDriver driver;
  10. private String baseUrl;
  11. private StringBuffer verificationErrors = new StringBuffer();
  12. @Before
  13. public void setUp() throws Exception {
  14.   driver = new FirefoxDriver();
  15.   baseUrl = "http://photo.163.com/";
  16.   driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  17. }

  18. @Test
  19. public void test() throws Exception {
  20.   driver.get(baseUrl + "/");
  21.   driver.findElement(By.name("username")).clear();
  22.   driver.findElement(By.name("username")).sendKeys("demophoto");
  23.   driver.findElement(By.cssSelector("div.js-cur")).click();
  24.   driver.findElement(By.name("password")).clear();
  25.   driver.findElement(By.name("password")).sendKeys("qa1234");
  26.   driver.findElement(By.id("photo_index_login")).click();
  27.   driver.findElement(By.partialLinkText("排序相册")).click();
  28.   driver.findElement(By.cssSelector("#J-photoListSort > span.title")).click();
  29.   driver.findElement(By.linkText("自定义排序")).click();
  30.   //拖动图片
  31.   (new Actions(driver)).dragAndDrop(driver.findElement(By.id("7515773989")), driver.findElement(By.id("7515803792"))).perform();
  32.   driver.findElement(By.linkText("确定排序")).click();
  33.   Thread.sleep(10000);
  34.   driver.findElement(By.cssSelector("#J-photoListSort > span.title")).click();
  35.   driver.findElement(By.linkText("新相片在前")).click();
  36.    
  37. }

  38. @After
  39. public void tearDown() throws Exception {
  40.   driver.quit();
  41.   String verificationErrorString = verificationErrors.toString();
  42.   if (!"".equals(verificationErrorString)) {
  43.    fail(verificationErrorString);
  44.   }
  45. }

  46. private boolean isElementPresent(By by) {
  47.   try {
  48.    driver.findElement(by);
  49.    return true;
  50.   } catch (NoSuchElementException e) {
  51.    return false;
  52.   }
  53. }
  54. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2017-7-13 10:58:09 | 只看该作者
等会儿去制作一个看看
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 11:36 , Processed in 0.065626 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表