一 环境搭建
selenium 2.53
selenium-java-2.53.0.jar
selenium-java-2.53.0-srcs.jar 原代码包
拷贝的工程lib下,做build path,告诉项目jar包在lib里
关联原始代码:
jar包里都是.class文件,想看原始代码,关联源代码包,在selenium项目包右键属性,选java source attachment,选择selenium-java-2.53.0-srcs.jar。
package com.thoughtworks.selenium 源代码
package org.openqa.selenium 开源的代码
一个driver是一个浏览器实例,
selenium2.4.5-javadoc/index.html: api文档
-org.openqa.selenium.firefox 存放的是Firefox浏览器使用的类
- --FirefoxBinary
- --FirefoxDriver 浏览器实例
- --FirefoxProfile 用户配置文件
构造方法重载:不同的方式构造实例
FirefoxDriver() FirefoxDriver(Capabilities desiredCapabilities) FirefoxDriver(Capabilities desiredCapabilities, Capabilities requiredCapabilities) FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile) FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile, Capabilities capabilities) FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile, Capabilities desiredCapabilities, Capabilities requiredCapabilities) FirefoxDriver(FirefoxProfile profile)
package test.selenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class SeleniumTest { public static void main(String[] args) { // TODO Auto-generated method stub WebDriver driver = new FirefoxDriver(); driver.get("http://nvsm.cnki.net/KNS/"); driver.close(); } }
如果出现打不开浏览器,地址栏不能输入,操作不了页面dom,都是selenium版本和浏览器版本不匹配。selenium更新版本比浏览器慢,不能保证支持最新的浏览器版本。selenium2.53可以支持Firefox40以下版本。
二 Webdriver基础API - 浏览器实例管理
- -org.openqa.selenium.ie
- --InternetExplorerDriver
- org.openqa.selenium.chrome
- --ChromeDriver
- public class FirefoxDriver extends RemoteWebDriver
public class RemoteWebDriver extends java.lang.Object implements WebDriver - 如果需要用的Firefox特殊的方法,需强制类型转换
- appium和selenium用的是一套webdriver协议(多态)
- 执行程序每次打开的都是一个全新的没有设置的Firefox浏览器,设置不会在下次生效。selenium只会在默认路径(C:\Program Files (x86)\Mozilla Firefox\firefox.exe)找Firefox,如果安装位置不在默认路径则会报找不到Firefox可执行文件的错误。
- 举例:让selenium找的Firefox安装位置
System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); WebDriver driver = new FirefoxDriver(); driver.get("http://nvsm.cnki.net/KNS/");
举例:构造浏览器实例
FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile)
FirefoxBinary(java.io.File pathToFirefoxBinary)
FirefoxBinary ffb = new FirefoxBinary(new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe")); WebDriver driver = new FirefoxDriver(ffb,null); driver.get("http://nvsm.cnki.net/KNS/");
举例:构造浏览器实例(带配置文件的情况,利用存在的profile文件)
FirefoxProfile(java.io.File profileDir)
FirefoxProfile作用:保存用户配置信息,包括:浏览器设置信息,插件以及设置,书签和历史记录,用户名和密码,临时文件和网站数据,cookies。
cmd命令行输入:firefox.exe -ProfileManage
C:\Program Files (x86)\Mozilla Firefox>firefox.exe -ProfileManage
运行输入:%APPDATA%,打开C:\Users\PC\AppData\Roaming,所有的用户配置信息都在:C:\Users\PC\AppData\Roaming\Mozilla\Firefox\Profiles\1h1iplez.default
FirefoxProfile ffp = new FirefoxProfile(new File("C:\\Users\\PC\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\1h1iplez.default")); WebDriver driver = new FirefoxDriver(ffp); driver.get("http://nvsm.cnki.net/KNS/");
举例:构造浏览器实例(带配置文件的情况,自定义profile文件启动)
FirefoxProfile有3个重载的方法:
void |
setPreference(java.lang.String key, boolean value)
Set a preference for this particular profile. |
void |
setPreference(java.lang.String key, int value)
Set a preference for this particular profile. |
void |
setPreference(java.lang.String key, java.lang.String value)
Set a preference for this particular profile. |
浏览器地址栏输入:about:config,设置所有的属性和插件配置
浏览器相关配置:browser
例如:设置启动默认页面:browser.startup.homepage
FirefoxProfile ffp = new FirefoxProfile(); ffp.setPreference("browser.startup.homepage", "http://nvsm.cnki.net/KNS/"); //设置启动页 ffp.setPreference("browser.startup.page", 1); //0空白首页设置不生效 1用户自定义首页 WebDriver driver = new FirefoxDriver(ffp);
Webdriver设置Firefox无提示默认路径下载
FirefoxProfile ffp = new FirefoxProfile(); ffp.setPreference("browser.download.dir", "C:\\"); ffp.setPreference("browser.download.folderList", 2); // 设置浏览器默认下载文件夹 0桌面 1我的下载 2自定义 ffp.setPreference("browser.download.manager.showWhenStarting", false); ffp.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream, application/vnd.ms-excel, text/csv, application/zip"); WebDriver driver = new FirefoxDriver(ffp);
firebug插件,网络查看资源包括静态资源和js代码加载快慢,刷新地址可生成网络布图,资源加载的时间,参数可以输出成har文件,可以用showslow打开
举例:自动收集页面加载时序图
FirefoxProfile ffp = new FirefoxProfile(); ffp.addExtension(new File("source\\firebug-2.0.17.xpi")); ffp.addExtension(new File("source\\netExport-0.8.xpi")); // 插件相关 ffp.setPreference("extensions.firebug.allPagesActivation", "on"); //所有页面自动开启 ffp.setPreference("extensions.firebug.net.enableSites", "true"); //网络设置成开启 ffp.setPreference("extensions.firebug.defaultPanelName","net"); ffp.setPreference("extensions.firebug.netexport.alwaysEnableAutoExport","true"); ffp.setPreference("extensions.firebug.netexport.saveFiles","true"); ffp.setPreference("extensions.firebug.netexport.defaultLogDir", "C:\\"); WebDriver driver = new FirefoxDriver(ffp); Thread.sleep(2000); driver.get("http://nvsm.cnki.net/KNS/");