摘要: Selenium WebDriver Api 基础方法的详细讲解 智能等待implicitlywait()&&sleep()方法的区别 close()&&quit()退出浏览器区别
在上一篇中我们介绍Webdriver java环境的搭建以及一个简单的程序,大家一步一步的操作应该可以正常的运行第一个自动化脚本。现在就结合具体的代码和大家解释一下常用的几个方法和用途。
package com.cxy.controller;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class TestBaidu {
public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver dr = new FirefoxDriver();
dr.get("http://www.baidu.com");
dr.findElement(By.id("kw")).sendKeys("hello Selenium");
dr.findElement(By.id("su")).click();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dr.quit();
}
}
package com.cxy.controller;
Package:是声明一个包,后面是包的名称:xxx.xxx.xxx。包的作用:一般拿来分层,将同一业务的方法类放在一个package,方便管理和查找。
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
Import 这个关键字是引入额外的一些库,引入程序以后就可以调用里面类和方法,这里面引入了By 和 WebDriver FirefoxDriver,就可以使用这三个类和其中封装的方法了。
WebDriver dr = new FirefoxDriver();
新建一个WebDriver 的对象,但是new 的是FirefoxDriver的驱动。后续再介绍java基础知识会普及一下类和对象之间的关系。
dr.get("http://www.baidu.com");
dr.findElement(By.id("kw")).sendKeys("hello Selenium");
dr.findElement(By.id("su")).click();
上面说了dr 是WebDriver的对象,dr就可以调用WebDriver中的方法,也就是传说中WebDriver api。
get(String url):这个方法就是打开指定的网站,注意url的格式要正确:
FindElement(By by):是自动化过程中最常用的一个方法,在页面中寻找一个元素。其中传进入的参数就是你所定位到的元素,下一章节会具体的介绍元素定位方法。
Sendkeys(String string):向定位到的text 输入框中输入你想要输入的内容。上传文件也可以用sendkeys(),string就为上传文件的绝对路径。
Click():为点击事件,定位到想要点击button或者其它可以点击的地方,click就可以模仿鼠标点击的事件了。
Thread.sleep(3000);
页面加载需要一个时间,webdriver 只能找到页面已有的元素,所以有些时候需要加入一个等待的时间,让页面元素完全加载出来,才能通过findelement方法找到你想要的元素。这个sleep()并不是WebDriver中自带的方法,而是java中休眠线程的一个方法,这里不是很推荐。WebDriver自带了一个智能等待的方法。
dr.manage().timeouts().implicitlyWait(arg0, arg1);
Arg0:等待的时间长度,int 类型 ;
Arg1:等待时间的单位 TimeUnit.SECONDS 一般用秒作为单位。
dr.quit()和dr.close()都可以退出浏览器,简单的说一下两者的区别:第一个close,如果打开了多个页面是关不干净的,它只关闭当前的一个页面。第二个quit,是退出了所有Webdriver所有的窗口,退的非常干净,所以推荐使用quit最为一个case退出的方法。