【Java+selenium3】 Firefox/ IE/ Chrome主流瀏覽器自動化環境搭建(一)

1、java+selenium+firefoxhtml

1.環境準備:JDK1.8java

2.安裝firefox瀏覽器v59git

3.下載驅動:https://github.com/mozilla/geckodriver/releasesgithub

4.selenium依賴pom.xml導入:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-javaweb

   selenium 歷史版本鏡像下載地址:https://npm.taobao.org/mirrors/seleniumchrome

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.5.1</version>
</dependency>

5.代碼實現npm

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("執行結束,關閉瀏覽器"); } } }

2、java+selenium+IEapi

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);

3、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");

4、引入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.學習後總結,不足之處後續補充修正!

相關文章
相關標籤/搜索