前言
下面我會把 selenium 依賴和 appium 依賴混合起來,因爲二者依賴包之間本身就已經具備了一些類的相互繼承關係,下面我會通過 uml 類圖的形式非常清晰的展現
涉及 driver 的類的繼承關係
下面這張圖不夠全面,但是足以把最常用最重要的和 driver 有關的類和接口囊入其中
我們能從上圖中得到哪些信息呢?
最上面的接口在往上無繼承,WebDriver 是一個接口,我們平常使用WebDriver driver = new ChromeDriver()
實際就是一個多態的體現,RemoteWebDriver 是一個實現類,這時我們能想到平常使用 selenium-grid 就要使用 new 一個 Remote 的驅動了,這是因爲它本身是一個實現類提供了相應的構造器。我們還可以發現手機的驅動都是會一直繼承到 WebDriver 的。並且我們去看源碼會發現,手機端從 MobileDriver 開始就需要在創建時候指明泛型,該泛型需要繼承 WebElement,WebDriver 還沒要求要用泛型,可以發現 MobileDriver 中有不同的 findElement 方法,返回的就是該泛型類型。
其他常見類的繼承關係
我們能從上圖中得到哪些信息呢?
我們可以發現上圖中的 JavascriptExecutor 的位置,也可以看見 WebElement 的相應的繼承關係