Selenium WebDriver的使用(一)

Selenium WebDriver的相关介绍及资源下载:http://docs.seleniumhq.org/

在2016年2月份Selenium WebDriver更新到了2.52.0版本,建议在使用旧版本的更新至该版本,在稳定性和性能上提高不少。

Selenium支持驱动众多的浏览器,包括PC、移动端及PhantomJS等。

以在windows下的JAVA开发环境为例,下载http://selenium-release.storage.googleapis.com/2.52/selenium-java-2.52.0.zip,解压后添加到工程中。PC端建议使用Google Chrome和PhantomJS。PhantomJS可以理解为没有界面的Safari(QtWebkit作为渲染引擎,JS引擎是JavascriptCore)。要使Selenium能驱动Google Chrome,还需要根据你的系统环境下载chromedriver,下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads。在本文撰写的时候,chromedriver最新版本为2.21。需要注意的是,2.21版本支持Chrome的版本为v46-50,如果chromedriver和你使用的Chome版本不匹配,程序可能无法正常工作。

chromedriver下载解压后,可以放在任意目录,在程序中指定好环境变量路径即可:

1 System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\driver\\chromedriver.exe");
2 WebDriver webDriver = new ChromeDriver();
3 webDriver.get("https://www.google.com/");

在驱动并启动Google Chrome时,浏览器实例是不带有任何用户环境配置的,需要自己加载,举个例子:

指定Google Chrome的缓存目录:

1 ChromeOptions options = new ChromeOptions();
2 options.addArguments("--disk-cache-dir="+System.getProperty("user.dir")+"\\cache");
3 WebDriver webDriver = new ChromeDriver(options);

command line flag如:

--start-maximized:启动时最大化浏览器窗口;

--window-position=x,y:启动时指定浏览器屏幕坐标;

--window-size=w,h:启动时指定浏览器宽高;

--disk-cache-size=s:指定浏览器可使用的磁盘缓存大小;

--media-cache-size=1:指定媒体文件缓存大小;

--ignore-certificate-errors:忽略证书错误;

--disable-extensions:禁用扩展;

--disable-translate:禁用翻译转换;

更多的可参考:http://www.chromium.org/developers/how-tos/run-chromium-with-flags,http://peter.sh/experiments/chromium-command-line-switches/

另外一种方法是使用capabilities,参考:https://sites.google.com/a/chromium.org/chromedriver/capabilities

如果使用phantomjs,同样的,指定好系统环境变量路径即可:

1 System.setProperty("phantomjs.binary.path", System.getProperty("user.dir") + "\\driver\\phantomjs.exe");
2 webDriver = new PhantomJSDriver();
3 webDriver.get("https://www.google.com/");

在get()完成,接下来就可以操作浏览器、提取页面内容了,比如:

提取页面中的image:

1 WebElement webElement;
2 List<WebElement> webElements;
3 webElements = webDriver.findElements(By.cssSelector("body img"));
4 for (webElement : webElements) {
5     System.out.println(webElement.getAttribute("src"));
6     System.out.println(webElement.getSize());
7 };

Selenium WebDriver的API参考地址:http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html

如果在get()的时候打开了多个浏览器窗口,可通过switchTo().window(winHandle),切换到各窗口:

 1 String defaultWinHandle = webDriver.getWindowHandle();
 2 if (webDriver.getWindowHandles().size()>1) {
 3     for(String winHandle : webDriver.getWindowHandles()){
 4         if (!winHandle.equals(defaultWinHandle)) {
 5             webDriver.switchTo().window(winHandle);
 6             //do something...
 7             //close window: webDriver.close();
 8         };
 9     };
10     webDriver.switchTo().window(defaultWinHandle);
11 };

在操作完成后,退出:

1 webDriver.quit();

如果页面中有iframe,如何可靠的切入切出?如果iframe还有嵌套怎么办?

待续!

原创文章,转载请标明出处。

时间: 2024-12-05 17:59:55

Selenium WebDriver的使用(一)的相关文章

java selenium webdriver处理JS操作窗口滚动条

未经作者允许,禁止转载!!! import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class JS20161212 { public static void main(String[] args) throws InterruptedException { // TODO

Selenium Webdriver元素定位的八种常用方式

在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下. 1. By.name() 假设我们要测试的页面源码如下: <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><

Selenium webdriver 操作日历控件

一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如: 但是,有的日期控件是readonly的 比如12306的这个 <input id="train_date" class="inp-txt" type="text" value="2015-03-15" name="back_train_date" a

Selenium webdriver 学习总结-元素定位

Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要高些,使用id,name属性定位元素是最可靠,效率最高的一种办法. 1.工具选择:在我们开发测试脚本的过程中各个浏览器给我们也提供了方便定位元素的工具,我比较喜欢使用firefox的firebug工具,也是目前很多开发测试人员比较热衷的选择,原因是firefox是唯一能够集成selenium IDE

用Python selenium+webdriver的一个简单的登录自动化测试--豆丁网登录测试

#coding=utf-8 from selenium import webdriver #from selenium.webdriver.remote import switch_to #from selenium.webdriver.common import alert #import unittest  import time,os def users_zidian():  #用户名用例用一个字典实现参数化调用#     users={'zhengshuheng':'123456','[

【Selenium WebDriver】元素定位函数 FindElement

定位Web页面上的元素,用FindElement函数,它可以根据元素的不同属性来快速定位.具体的属性如下: 例子: HTML页面文件: 1 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-us"> 2 <head> 3 <body> 4 <form name="loginForm"> 5 <label for="username

selenium webdriver处理浏览器Cookie

有时候我们需要验证浏览器中是否存在某个cookie,因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的.WebDriver 提供了操作Cookie 的相关方法可以读取.添加和删除cookie 信息.WebDriver 操作cookie 的方法有:? getCookies() 获得所有cookie 信息? addCookie(cookie_dict) 添加cookie,必须有name 和value 值? deleteAllCookies() 删除所有cookie 信息? delete

selenium webdriver 截屏操作

有时候我们需要进行截屏操作,特别是遇到一些比较重要的页面信息(出现错误)或者出现不同需要进行对比时, 我们就需要对正在处理的页面进行截屏! 未经作者允许,禁止转载! package test_wait20161205; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.o

selenium webdriver学习(六)------------如何得到弹出窗口

在selenium 1.X里面得到弹出窗口是一件比较麻烦的事,特别是新开窗口没有id.name的时候.当时还整理了处理了几种方法,详见:http://seleniumcn.cn/read.php?tid=791 .在selenium webdriver中得到新开窗口相对简单的多,它无关新开窗口的id.name等属性.以下面的html为例: [html] view plaincopyprint? <span style="white-space: normal; background-col

[selenium webdriver Java]元素定位——findElement/findElements

策略 语法 语法 描述 By id driver.findElement(By.id()) driver.findElements(By.id()) 通过id属性定位元素 By name driver.findElement(By.name()) driver.findElements(By.name()) 通过name属性定位元素 By class name driver.findElement(By.className()) driver.findElements(By.className(