1. 程式人生 > >Java+Selenium3方法篇1-從程式碼角度去解釋啟動firefox的過程

Java+Selenium3方法篇1-從程式碼角度去解釋啟動firefox的過程

       通過前面文章,我們知道如何去檢視Selenium相關介面或者方法。一般,我們看到更多的是介面,在檢視原始碼的時候,你可以看著這個介面的備註備份,它會告訴你,這個介面或者方法的作用,有哪些引數,引數型別是什麼。為了更好去描述和理解這個過程,我們舉例,通過查詢原始碼的方式去理解Selnium啟動firefox的過程。

System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");
       按下Ctrl+滑鼠懸停在setProperty上方,點選滑鼠左鍵,可以看到java中setProperty的原始碼。自己去閱讀下程式碼中關於setProperty的介紹。其實就是設定指定鍵對值的系統屬性。上面webdriver.gecko.driver就是鍵,.\\Tools\\geckodriver.exe就是值。這樣就把geckodriver設定成為系統的全域性變數!這個時候driver就相當於一個靜態變數,存放在記憶體裡,直到driver關閉。
       所謂的 system porperty,system 指的是 JRE (runtime)system,不是指 OS。
設定指定鍵指示的系統屬性,可以利用系統屬性來載入多個驅動。所以,上面這行程式碼,就是通過鍵和值指定firefox 的驅動位置。

WebDriver driver = new FirefoxDriver();
       點選檢視WebDriver發現是一個介面,它的備註這樣寫的:WebDriver是一個測試的主要介面,它展現了一個理想化的web瀏覽器,它主要包括三個目錄。1)控制瀏覽器本身 2)查詢和選擇元素 3)除錯程式,比如異常處理。
       driver這裡是一個例項物件,學習了Java中類和物件,就應該不難理解。
       new 是一個關鍵字,Java中通過new這個關鍵字,可以在記憶體中開闢一塊空間,用來載入變數。
FirefoxDriver(),是WebDriver這個介面在firefox上的一個實現具體類。FirefoxDriver這個類裡面,還包含一些firefox瀏覽器的一些選項設定。這行程式碼的意思用一句話來講:初始化一個firefox型別的driver例項物件。這裡除了firefox,還有IE,Safari,chrome等對應的driver啟動方法,你可以檢視*\Selenium-Java-src\org\openqa\selenium,可以找到這些介面檔案。

driver.manage().window().maximize();
      這裡driver,就是指上面我們初始化的firefox的例項物件,就是類似一個真實瀏覽器。manage是Options這個介面的一個方法,window().maximize(),window也是一個介面,這個介面下,有maximize這個方法,也就是最大化瀏覽器,window下也有全屏,設定視窗大小的方法。

driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
        manage上面提到是一個方法,直接來看timeouts,timeouts是介面Timeouts的一個例項物件,它的左右是針對webdriver例項管理超時的一個介面。implicitlyWait是一個隱式等待,當在一定時間內,如果還沒有找到頁面元素,就報超時。引數有兩個,第一個是8,第二個是時間單位,這裡選擇秒,所以這裡是8秒後超時。

driver.get("https://www.baidu.com");
       這裡的get方法的作用是,在當前瀏覽器視窗,載入一個新的web頁面,是通過http get發生請求完成的。引數型別是String,一般是url。get方法就是開啟一個網頁的作用。

driver.quit();
      退出有quit和close兩種,這裡quit表示退出當前瀏覽器,關閉這個瀏覽器有關聯的所有視窗。

解釋過程就到這裡,下面文章開始介紹Selenium中的常見方法或者介面的具體使用例子。