一、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
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.5.1</version> </dependency>
5.代碼實現
package cn.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class FirefoxDemo01 { public static void main(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 = new FirefoxDriver(); 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.代碼實現
package cn.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; public class IEDemo02 { public static void main(String[] args) { WebDriver driver = null; try { //指定IEDriver的存放路徑 System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe"); //創建Capabilities對象 DesiredCapabilities capabilities = new DesiredCapabilities(); //瀏覽器安全模式保持一致(通過代碼忽略設置安全模式保持一致) capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); //瀏覽器縮放比例保持正常(忽略瀏覽器縮放比例設置) capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); driver = new InternetExplorerDriver(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) for all zones. //百度翻譯僅供參考 org.openqa.selenium。啟動Internet Explorer SessionNotCreatedException:意想不到的錯誤。 保護模式設置為所有區域是不一樣的。啟用保護模式必須設置為相同的值為所有區域(啟用或禁用)。
解決方法如下:
//創建Capabilities對象 DesiredCapabilities capabilities = new DesiredCapabilities(); //瀏覽器安全模式保持一致(通過代碼忽略設置安全模式保持一致) 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.代碼實現:
package cn.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ChromeDemo03 { public static void main(String[] args) throws InterruptedException { //自定義安裝chrome路徑,默認安裝目錄不需要配置此項 //System.setProperty("webdriver.chrome.bin", "xxx"); //指定chromeDriver存放路徑 System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe"); WebDriver driver = new ChromeDriver(); 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 from http://chromedriver.storage.googleapis.com/index.html
//解決辦法 System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
四、引入testNG整合三大瀏覽器代碼示例:
1.testng導入依賴
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.10</version> <scope>test</scope> </dependency>
2.新建一個父類BaseCase來實現瀏覽器的前期准備工作
package cn.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class BaseCase { public static WebDriver driver =null; /**根據提供的瀏覽器類型初始化驅動 * @param browserType */ @Parameters(value= {"browserType"}) @BeforeSuite public void init(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 = new FirefoxDriver(); }else if("chrome".equalsIgnoreCase(browserType)) { //chrome System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe"); driver = new ChromeDriver(); }else if("ie".equalsIgnoreCase(browserType)) { //ie System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true); capabilities.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); driver = new InternetExplorerDriver(capabilities); } } @AfterSuite public void over() { driver.quit(); System.out.println("執行結束,關閉瀏覽器!"); } }
3.testng.xml來配置參數,實現瀏覽器的選擇性執行
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" parallel="false"> <test name="Test"> <classes> <class name="cn.test.AutoDemo01"/> </classes> </test> <!-- Test --> <!-- 在這里來配置使用瀏覽器的類型,如下 --> <parameter name="browserType" value="firefox"></parameter> </suite> <!-- Suite -->
4.執行用例AutoDemo01,直接繼承父類來實現瀏覽器驅動的初始化
package cn.test; import org.openqa.selenium.By; import org.testng.annotations.Test; import cn.test.BaseCase;
public class AutoDemo01 extends BaseCase{ @Test public void test() throws InterruptedException { driver.get("https://www.baidu.com"); driver.findElement(By.id("kw")).sendKeys("開始編寫自動化腳本來執行測試用例"); Thread.sleep(3000); } }
5.執行TestNG Suite
6.學習后總結,不足之處后續補充修正!