Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考

本文通过实战演示了如何使用 Selenium WebDriver 进行自动化测试,包括设置 ChromeDriver、访问页面、等待页面加载、执行 JavaScript 代码、操作页面元素等关键步骤。

//System.setProperty("webdriver.firefox.bin", "E:/firefox/firefox.exe");
//FirefoxDriver dr = new FirefoxDriver();

============ Selenium 2.0 WebDriver API  Demo ==========

package example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

import util.Log;
import util.SeleniumUtil;

public class TestAllInOne {
	public static final String BASE_URL = "http://www.baidu.com";

	public static void main(String[] args) throws Exception {
		System.setProperty("webdriver.chrome.driver", "E:/0down/selenium/chromedriver.exe");
		
		//打开firefox
		ChromeDriver dr = new ChromeDriver();
		
		//访问页面
		dr.get(BASE_URL);
//		dr.navigate().to(BASE_URL);//与dr.get()效果相同
//		dr.navigate().forward();//让浏览器前进一步
//		dr.navigate().back();//让浏览器后退一步
		Log.Info(dr.getPageSource());
		
		//等待页面加载完毕,直到条件满足
		(new WebDriverWait(dr, 10)).until(new ExpectedCondition<Boolean>() {
			public Boolean apply(WebDriver dr) {
            	Log.Info("web driver wait...");
            	int index = dr.getPageSource().indexOf("京ICP证030173号");
                if(index != -1){
                	Log.Info("web driver wait, true...");
                	return true;
                }else{
                	Log.Info("web driver wait, false...");
                	return false;
                }
            }
        });
		
		//等待页面加载完毕,直到条件满足,一个while循环,也挺简单的吧
		/*
		while(true){
			 Log.Info("wait for...");
			int index = dr.getPageSource().indexOf("京ICP证030173号");
            if(index != -1){
            	Log.Info("wait for, true...");
            	break;
            }
            Thread.sleep(1 * 1000);
		}*/
		
		//等待元素加载完成
//		(new WebDriverWait(dr, 10)).until(
//			ExpectedConditions.presenceOfElementLocated(By.id("kw"))
//		);
		
		//等待元素加载完成,并可点击
//		WebDriverWait wait = new WebDriverWait(dr, 10);
//		wait.until(ExpectedConditions.elementToBeClickable(By.id("su")));
		
		//全局性的影响,只要WebDriver不消失,每隔10秒检查元素是否加载完成,直到加载完成。
//		dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//		dr.get("http://somedomain/url_that_delays_loading");
//		dr.findElement(By.id("myDynamicElement"));
		
//		WebElement we = dr.findElement(By.id("kw"));
//		we.sendKeys("selenium");
//		we.click();
		
//		dr.findElement(By.id("元素id"));//最常用
//		dr.findElement(By.className("class名称"));//比较常用
//		dr.findElement(By.tagName("tag名称"));//比较常用
//		dr.findElement(By.cssSelector("css选择器"));//比较常用
//		dr.findElement(By.name("元素的name属性"));//比较常用
//		dr.findElement(By.linkText("超链接的内容"));//不常用
//		dr.findElement(By.partialLinkText("超链接的部分内容"));//不常用
//		dr.findElement(By.xpath("xpath表达式"));//不常用
		
		//1:用java从文本中读取jQuery,并用WebDriver加载jQuery
		SeleniumUtil.LoadAndExecuteJQuery(dr);
		//2:用WebDriver执行你写的jQuery代码,可以返回单个元素,也可以返回元素数组,或无返回值
		//执行你的jQuery代码,既然能执行自已的jQuery代码,就能做任何事情了
		dr.executeScript("$('#kw').val('selenium'); $('#kw').val($('#kw').val() + ' java');");
		//也可以用WebDriver API进行页面元素的操作
		WebElement el = dr.findElement(By.id("kw"));
		el.sendKeys("selenium java");
		dr.findElement(By.id("su")).click();
		
		//WebDriver专用的select下接框处理类
		/*
		List<WebElement> elList = dr.findElements(By.tagName("select"));
		if(elList != null && elList.size() > 0){
			Select select = new Select(elList.get(0));
			select.deselectAll();
			select.selectByVisibleText("Edam");
			select.selectByIndex(1);
			select.selectByValue("10010");
		}*/
		
		//window和frame的切换
		/*
		dr.switchTo().window("xxName");
		dr.switchTo().frame("xxName");
		*/
		
		//浏览器自带的alert弹出框的处理
		/*
		Alert alert = dr.switchTo().alert();
		if(alert != null){
			alert.accept();
			alert.dismiss();
			alert.sendKeys("collonn");
		}*/
		
		/*
		//用jQuery查找一个元素
		WebElement wea = (WebElement)dr.executeScript("return $('#kw').get(0);");
		//用jQuery查找一组元素
		List<WebElement> weaList = (List<WebElement>)dr.executeScript("return $('.stu_info').get();");
		//返回Boolean
		Boolean flagB = (Boolean)dr.executeScript("return true;");
		//返回Double
		Double flagD = (Double)dr.executeScript("return 12.12;");
		//返回Long
		Long flagL = (Long)dr.executeScript("return 123;");
		//返回String
		String flagS = (String)dr.executeScript("return 'collonn';");
		//返回String数组
		List<String> flagSs = (List<String>)dr.executeScript("var ary = ['a', 'b', 'c']; return ary;");
		*/
		
		//保存网面截图
		SeleniumUtil.TakeScreenshot(dr, null);
		
		//关闭浏览器
		dr.quit();
	}

}

Selenium-Webdriver系列教程 Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代。 不过事实却并非如此,现今原本早应退役的selenium 1.x却还是多数人坚定的选择,究其原因不过是1.x时代遗留下了大量的文档,代码,教程让人们误以为1.x还是这个年代的主流,还应该光鲜亮丽在前台演出属于它的美好。长江后浪推前浪,最为前浪的selenium 1.x的宿命应该是死在沙滩上。 好了,直入主题,由于开源社区不再维护selenium 1.x再加之更为先进的selenium 2.0确实有不少优势之初可以完全取代1.x,在这里笔者会花一些笔墨,若干篇幅,争取深入浅出的讲解selenium 2.0的一些基本知识,常用方法和高级扩展,但由于笔者水平和时间精力等确实有限,文中应该避免不了谬误和臆断之处,还望众位读者多多海涵。 本文中所以代码和示例均由Ruby编写,本文介绍的webdriver api也主要是ruby binding。所以首先请确保ruby语言在开发环境上正确安装。 教程的第一节从selenium 2.0webdriver关系说起。 Selenium 2.0webdriver之间有什么关系,有什么不可告人的秘密?说来话长,但也简单。Selenium 2.0其实就是webdriver。就像张飞就是张翼德,关羽就是关云长一样,叫法不同但内容却是一样的。 安装selenium webdriver • 安装ruby1.8.7或1.9.2。注意selenium-webdriver只支持1.8.7以上的ruby版本; • 使用gem安装selenium-webdriver;打开命令行,输入下列代码完成安装。注意,如果你的开发环境需要http proxy的话,请注意在gem命令中加入--http_proxy参数; gem install selenium-webdriver [--http_proxy] • 在命令行中输入gem list,如果selenium-webdriver正确安装,则其应该出现在结果列表里。在文本写作时,selenium webdriver的最新版本应该是2.2.0; gem list selenium-webdriver 安装firefox。本文使用firefox作为测试浏览器进行讲解,所以请确保开发环境上正确安装了firefox。由于firefox版本更新较快,我们只需要选择1个稳定版本安装既可,本文中笔者使用的版本是FF 5.0;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值