起初写博客是为了妹子学习,现在发现忽略了最基础的Selenium教程,所以:从本博客开始编辑 Selenium 入门知识。(学好Java)

Selenium 入门 1:(学好Java)

  录制回放,简单粗暴(如下图)。就不解释了。

  Selenium 环境搭建(学好Java)

Selenium是个 Java 的jar包,所以。必须要搭建好 Java 环境,既Path路径。例如下图

然后 Selenium jar包导入 eclipse,方法很多。只讲最简单的,

环境搭建完毕。

搭建好环境了,那么该怎么操作呢? 还记得怎么使用 hello word 么? 没错。

  举一反三。聪明的你,现在是不是只缺API了呢。

好的,搬运工开始了。

 

API(Selenium操作,纯粹搬运工)

然后就可以按照 Selenium 的API开始啦。

API 链接 http://seleniumhq.github.io/selenium/docs/api/java/index.html

1  用webdriver打开一个浏览器
    打开firefox浏览器:
            WebDriver driver = new FirefoxDriver();

打开IE浏览器
            WebDriver driver = new InternetExplorerDriver ();

打开chrome浏览器
       WebDriverdriver = new ChromeDriver();

1.2.2  最大化浏览器  
  WebDriver driver = new FirefoxDriver();
  driver.manage().window().maximize();

1.2.3 关闭浏览器 
WebDriver driver = new FirefoxDriver();
      driver.close();
      driver.quit();

1.3  打开测试页面
    driver.get("http://www.google.com");
    driver.navigate().to("http://www.baidu.com/");
      P.S.navigate方法会产生1个Navigator对象,其封装了与导航相关的一些方法,比如前进后退等

1.4  页面元素定位
Webdriver提供下面两种方法来定位页面元素,参数是By对像,最常用是By.id和By.name查找。
    findElement   定位某个元素,如果没有找到元素会抛出异常:NoSuchElementException
    findElements     定位一组元素

例如需要定位如下元素:
  <input class="input_class" type="text" name="passwd" id="passwd-id" />

By.id:
      WebElement element = driver.findElement(By.id("passwd-id"));

By.name:
      WebElement element = driver.findElement(By.name("passwd"));

By.xpath:
      WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

By.className
      WebElement element = driver.findElement(By.className("input_class"));

By.cssSelector
      WebElement element = driver.findElement(By.cssSelector(".input_class"));

By.linkText:
      WebElement element = driver.findElement(By.linkText("百科"));

By.partialLinkText:
      //这个方法就是模糊查询
      WebElement element = driver.findElement(By.partialLinkText("hao"));

By.tagName:
      String test= driver.findElement(By.tagName("form")).getAttribute("name");

1.5  如何对页面元素进行操作
1.5.1 输入框(text field or textarea)
  WebElement element = driver.findElement(By.id("passwd-id"));
    element.sendKeys(“test”);//在输入框中输入内容:
    element.clear();       //将输入框清空
    element.getText();     //获取输入框的文本内容:

1.5.2下拉选择框(Select)
  Select select = new Select(driver.findElement(By.id("select"))); 
    select.selectByVisibleText(“A”);
    select.selectByValue(“1”);
    select.deselectAll();
    select.deselectByValue(“1”);
    select.deselectByVisibleText(“A”);
    select.getAllSelectedOptions();
    select.getFirstSelectedOption();

1.5.3单选项(Radio Button)
  WebElement radio=driver.findElement(By.id("BookMode"));
    radio.click();       //选择某个单选项
    radio.clear();      //清空某个单选项
    radio.isSelected();  //判断某个单选项是否已经被选择

1.5.4多选项(checkbox)
  WebElement checkbox = driver.findElement(By.id("myCheckbox."));
    checkbox.click();
    checkbox.clear();
    checkbox.isSelected();
    checkbox.isEnabled();

1.5.5按钮(button)
WebElement btn= driver.findElement(By.id("save"));
    btn.click();      //点击按钮
    btn.isEnabled ();  //判断按钮是否enable

1.5.7弹出对话框(Popup dialogs)
  Alert alert = driver.switchTo().alert();
    alert.accept();  //确定
    alert.dismiss();  //取消
    alert.getText(); //获取文本

1.5.8表单(Form)
  Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:
  WebElement approve = driver.findElement(By.id("approve"));
  approve.click();

  approve.submit();//只适合于表单的提交

1.5.9上传文件
  WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));
  String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
  adFileUpload.sendKeys(filePath);

1.6  Windows 和 Frames之间的切换
    driver.switchTo().defaultContent();     //返回到最顶层的frame/iframe
    driver.switchTo().frame("leftFrame");    //切换到某个frame:
    driver.switchTo().window("windowName"); //切换到某个window

1.7  调用Java Script
  JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("JS脚本");

1.8  超时设置
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);      //识别元素时的超时时间
        driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);  //页面加载时的超时时间
        driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);  //异步脚本的超时时间

自由等待(隐形等待)

  new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='btnAddEnlistAddorUpdate_relType']")));

最后,该怎么断言呢?

  断言就是用上面的 API给的 getxxx() 的方法,拿到实际值。然后断言是否等于case设定的预期。

最常用的是 element.getText(); 获取文本,判断文本内容。

  1. Assert.assertTrue(字符串.contains(预期));
  2. Assert.assertEquals(实际值 , 期望值);

By: Jack.Zhong

记得点赞哦

Selenium自动化-入门1的更多相关文章

  1. Selenium 2 入门

    在多个浏览器中进行 Web 应用程序的端到端功能测试 Selenium 是一款有名的 Web 应用程序测试框架,用于进行功能测试.新版本 Selenium 2 结合了 Selenium 1 和 Web ...

  2. 打个响指Selenium自动化开启

    最近斗哥在朋友的影响下,接触了自动化测试工具中的一个项目:appium自动化测试脚本. appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额 ...

  3. selenium webdriver入门

    写在前面:最近在研究UI自动化测试的过程中,发现公司里通常用的是AutomanX框架,而这个框架实际上是基于selenium webdriver框架的,所以在编写测试用例时,很多语法都是直接使用sel ...

  4. Python+Selenium基础入门及实践

    Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...

  5. RobotFramework + Python 自动化入门 三 (Web自动化)

    在<RobotFramwork + Python 自动化入门 一>中,完成了一个Robot环境搭建及测试脚本的创建和执行. 在<RobotFramwork + Python 自动化入 ...

  6. Python2.6.6执行selenium自动化

    系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ...

  7. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  8. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

    Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...

  9. Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

    在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...

随机推荐

  1. js中的观察者模式

    什么事观察者模式: 这是一种创建松散耦合代码的技术.它定义对象间 一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.由主体和观察者组成,主体负责发布事件,同时观察者通过 ...

  2. Foxmail6.5 ERR LOGIN FAIL 重新输入口令

    这几天 Foxmail 6.5 收邮件不正常,一直报告ERR LOGIN FAIL,要求重新输入口令. 但输入正确的口令也无法收邮件. 反复折腾,最后发现如下设置即可: 邮箱账户设置 --> 邮 ...

  3. [Swift]LeetCode918. 环形子数组的最大和 | Maximum Sum Circular Subarray

    Given a circular array C of integers represented by A, find the maximum possible sum of a non-empty ...

  4. [Swift]LeetCode942. 增减字符串匹配 | DI String Match

    Given a string S that only contains "I" (increase) or "D" (decrease), let N = S. ...

  5. Java IO流读取文件

    使用指定编码读取文件 public static String toString(File file, String charset){ StringBuilder result = new Stri ...

  6. 10.Django ModelForm

    ModelForm 1.ModeForm简单验证 from django.db import models # Create your models here. class UserInfo(mode ...

  7. Java如何在运行时识别类型信息?

    在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得:但有一些知识不是的,需要在实践的时候才能得到真知——这或许就是王阳明提倡的“知行合一”. 在Java中,并不是所有的类型信息都能在编译阶段 ...

  8. 前端(各种demo)二:左侧导航栏的折叠和打开(不使用js)基础版和升级版

    1.给div设置定位. 复习一下—— css中position有五种属性: static:默认值,没有定位 absolute:绝对定位,相对于父级元素进行定位 relative:相对定位 fixed: ...

  9. Netty(三) 什么是 TCP 拆、粘包?如何解决?

    前言 记得前段时间我们生产上的一个网关出现了故障. 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信. 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议. 有个 ...

  10. C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...