selenium java 瀏覽器操作
一 環境搭建
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/");
selenium java 瀏覽器操作