一、java+selenium+firefox
1.環境准備:JDK1.8
2.安裝firefox瀏覽器v59
3.下載驅動:https://github.com/mozilla/geckodriver/releases
4.selenium依賴pom.xml導入:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java
selenium 歷史版本鏡像下載地址:https://npm.taobao.org/mirrors/selenium
org.seleniumhq.selenium
selenium-java
3.5.1
5.代碼實現
packagecn.test;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.firefox.FirefoxDriver;public classFirefoxDemo01 {public static voidmain(String[] args) {
WebDriver driver=null;try{//自定義安裝Firefox路徑
System.setProperty("webdriver.firefox.bin", "D:\\Firefox59\\App\\Firefox\\firefox.exe");//存放Firefox驅動的路徑
System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");
driver= newFirefoxDriver();
driver.get("https://www.baidu.com/");
}catch(Exception e) {
e.printStackTrace();
}finally{
driver.quit();
System.out.println("執行結束,關閉瀏覽器");
}
}
}
二、java+selenium+IE
1.JDK1.8已安裝
2.selenium3.51 依賴包上述已經導入;
3.下載IE驅動地址:https://npm.taobao.org/mirrors/selenium/3.5/
4.代碼實現
packagecn.test;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.ie.InternetExplorerDriver;importorg.openqa.selenium.remote.DesiredCapabilities;public classIEDemo02 {public static voidmain(String[] args) {
WebDriver driver= null;try{//指定IEDriver的存放路徑
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");//創建Capabilities對象
DesiredCapabilities capabilities = newDesiredCapabilities();//瀏覽器安全模式保持一致(通過代碼忽略設置安全模式保持一致)
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);//瀏覽器縮放比例保持正常(忽略瀏覽器縮放比例設置)
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
driver= newInternetExplorerDriver(capabilities);
driver.get("https://www.baidu.com");
Thread.sleep(3000);
}catch(Exception e) {
e.printStackTrace();
}finally{//關閉瀏覽器
driver.quit();
System.out.println("執行結束,關閉IE瀏覽器");
}
}
}
5.常見報錯信息
(1) IE驅動路徑未指定,導致找不到IE驅動報錯如下:
解決方法如下:
//指定IEDriver的存放路徑
System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe");
2.IE 安全模式設置
org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) forall zones.//百度翻譯僅供參考
org.openqa.selenium。啟動Internet Explorer SessionNotCreatedException:意想不到的錯誤。 保護模式設置為所有區域是不一樣的。啟用保護模式必須設置為相同的值為所有區域(啟用或禁用)。
解決方法如下:
//創建Capabilities對象
DesiredCapabilities capabilities = newDesiredCapabilities();//瀏覽器安全模式保持一致(通過代碼忽略設置安全模式保持一致)
capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
WebDriver driver= new InternetExplorerDriver(capabilities);
3.瀏覽器的縮放比例保持正常
org.openqa.selenium.SessionNotCreatedException: Unexpected error launching Internet Explorer. Browser zoom level was set to 111%. It should be set to 100%
//通過360瀏覽器翻譯,僅供參考
org.openqa.selenium。啟動Internet Explorer SessionNotCreatedException:意想不到的錯誤。瀏覽器縮放級別設置為111%。它應該被設置為100%
解決方法如下:
//瀏覽器縮放比例保持正常(忽略瀏覽器縮放比例設置)
capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
driver= new InternetExplorerDriver(capabilities);
三、java+selenium+chrome
1.JDK1.8已安裝
2.selenium 3.5.1 依賴已經導入
3.下載chrome驅動:https://npm.taobao.org/mirrors/chromedriver
我的chrome是v53. 所以我下載 v2.25驅動
注意:Chrome瀏覽器版本與ChromeDriver版本映射表查看鏈接:https://www.cnblogs.com/xiaozhaoboke/p/10107349.html
4.代碼實現:
packagecn.test;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.chrome.ChromeDriver;public classChromeDemo03 {public static void main(String[] args) throwsInterruptedException {//自定義安裝chrome路徑,默認安裝目錄不需要配置此項//System.setProperty("webdriver.chrome.bin", "xxx");//指定chromeDriver存放路徑
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
WebDriver driver= newChromeDriver();
driver.get("https://www.baidu.com");
Thread.sleep(3000);
driver.quit();
System.out.println("關閉瀏覽器,執行結束!");
}
}
常見報錯:
Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded fromhttp://chromedriver.storage.googleapis.com/index.html
//解決辦法
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
四、引入testNG整合三大瀏覽器代碼示例:
1.testng導入依賴
org.testng
testng
6.9.10
test
2.新建一個父類BaseCase來實現瀏覽器的前期准備工作
packagecn.test;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.chrome.ChromeDriver;importorg.openqa.selenium.firefox.FirefoxDriver;importorg.openqa.selenium.ie.InternetExplorerDriver;importorg.openqa.selenium.remote.DesiredCapabilities;importorg.testng.annotations.AfterSuite;importorg.testng.annotations.BeforeSuite;importorg.testng.annotations.Parameters;importorg.testng.annotations.Test;public classBaseCase {public static WebDriver driver =null;/**根據提供的瀏覽器類型初始化驅動
*@parambrowserType*/@Parameters(value= {"browserType"})
@BeforeSuitepublic voidinit(String browserType) {//firefox
if("firefox".equalsIgnoreCase(browserType)) {
System.setProperty("webdriver.firefox.bin", "D:\\Firefox59\\App\\Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe");
driver= newFirefoxDriver();
}else if("chrome".equalsIgnoreCase(browserType)) {//chrome
System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
driver= newChromeDriver();
}else if("ie".equalsIgnoreCase(browserType)) {//ie System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe"); DesiredCapabilities capabilities = newDesiredCapabilities(); capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
driver= newInternetExplorerDriver(capabilities);
}
}
@AfterSuitepublic voidover() {
driver.quit();
System.out.println("執行結束,關閉瀏覽器!");
}
}
3.testng.xml來配置參數,實現瀏覽器的選擇性執行
4.執行用例AutoDemo01,直接繼承父類來實現瀏覽器驅動的初始化
packagecn.test;importorg.openqa.selenium.By;importorg.testng.annotations.Test;importcn.test.BaseCase;public class AutoDemo01 extendsBaseCase{
@Testpublic void test() throwsInterruptedException {
driver.get("https://www.baidu.com");
driver.findElement(By.id("kw")).sendKeys("開始編寫自動化腳本來執行測試用例");
Thread.sleep(3000);
}
}
5.執行TestNG Suite
6.學習后總結,不足之處后續補充修正!