Selenium是一个很不错的Web测试工具,使用灵活,简单,随着网站内容的增多,原始的人工测试越发的繁杂,而且经常有遗忘的地方,
自动化测试也就显得重要起来,这里记录一下selenium webdriver的学习过程
注:我是做java的,我只学习 java 与 Selenium WebDriver 配合的方法。
第一篇 Selenium IDE
对于新手而言,最开始可能会用Selenium IDE录制程序,但是熟悉之后,我更倾向于写代码做标准的功能测试,那还是首先讲一下Selenium IDE,再开始
我们的第一个helloWord.
Selenium IDE是Firefox的一个插件,是可以进行脚本录制以及案例转换
1.首先下载firefox 然后安装附加组建 Selenium IDE,Firebug
然后搜索Selenium IDE,Firebug这两个组建安装即可
2.启动Selenium IDE
1是录制开关,2是播放
这里可以导出成java的语言
当弹出上面的IDE窗口后,我们就可以开始Selenium的脚本录制了,右上角有个红色的圆点,当它下按时(如上图)就表示IDE正在进行脚本录制。OK,开始录制,录制的时候,直接操作Firefox浏览器窗口就可以了,IDE会自动记录你的操作的
第二篇.建立项目
用 Eclipse 建个 Maven 的工程,建成后,修改 pom.xml
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.53.0</version> </dependency> <dependency> <groupId>com.opera</groupId> <artifactId>operadriver</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-exec</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>com.opera</groupId> <artifactId>operadriver</artifactId> <version>0.16</version> <exclusions> <exclusion> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-remote-driver</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement>
第三篇 启动浏览器
ie
WebDriver driver = new InternetExplorerDriver(); // 让浏览器访问 Baidu driver.get("http://www.baidu.com");
firefox
// 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置 System.setProperty("webdriver.firefox.bin", "D:\\software\\firefox\\firefox.exe"); // 创建一个 FireFox 的浏览器实例 driver = new FirefoxDriver(); driver.get("http://www.baidu.com");
chrome
System.setProperty("webdriver.chrome.driver","C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe"); // 创建一个 ChromeDriver 的接口,用于连接 Chrome, //必须要有chromedriver.exe文件,selenium默认不能启动chrome // 创建一个 Chrome 的浏览器实例 driver = new ChromeDriver();
第四篇:code
①selenium ide录制
②程序抓取
js
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById(\"myProjectId\").style=\"display: block;\"");
driver.findElement(by.)
id
driver.findElement(By.id("kw"));
className
driver.findElement(By.className("comment")
cssSeletor
driver.findElement(By.cssSelector("img.plusImg"))
linktext
driver.findElements(By.linkText("客户登录"))
xPath
xpath
XPATH是一门在XML文档中查找信息的语言,XPATH可用来在XML文档中对元素和属性进行遍历,提供了浏览树的能力
主流的浏览器都支持XPATH
/html/body/div/form/input
//ul[@id=‘ul-select‘]/li[1]
//button[contains(text(),‘提交‘)]
//ul[@id=‘myProjectId‘]//a[contains(text(),‘提交‘)]
select操作
new Select(driver.findElement(By.id("company-city"))).selectByVisibleText("深圳");
第五篇:特殊操作
frame
有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没 有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。如果你在 一个default content中查找一个在iframe中的元素,那肯定是找不到的。反之你在一个iframe中查找另一个 iframe元素或default content中的元素,那必然也定位不到
//进入id="frame"或者name="frame"的frame中, driver.switchTo().frame("frame");
父子窗口
String newHandle = ""; //获取当前窗口 父窗口 String currentHandle = driver.getWindowHandle(); //点击页面元素打开新窗口 DriverUtil.scrollIntoView(driver, DriverUtil.getWebElement(driver, By.className("indentinfo-table-div"))); //获取浏览器所有窗口 Set<String> handles = driver.getWindowHandles(); Iterator<String> itWin = handles.iterator(); while(itWin.hasNext()){ String key = itWin.next(); if(currentHandle.equals(key)){ continue; } //得到新窗口 newHandle = key; } //切换窗口 WebDriver newDriver = driver.switchTo().window(newHandle); //业务操作 //... //... //set中移除新窗口 handles.remove(newHandle); //切回主窗口 driver.switchTo().window(currentHandle);
模态框
driver.switchTo().activeElement();
对于ajax
webDriverwait
sleep