[跟著官方文檔學Selenium][學習筆記][四][WebDriver的功能]
瀏覽器間共享的功能
這些功能用于所有瀏覽器。為了通過Selenium WebDriver創建新會話,本地端應向遠程端提供基本功能。遠端使用相同的功能集來創建會話并描述當前會話功能。
WebDriver提供了每個遠程端將(或應該)支持實現的功能,以下是WebDriver支持的功能:
browserName
此功能用于設置既定會話的browserName。如果未在遠端安裝指定的瀏覽器,則會話創建將失敗
EdgeOptions edgeOptions = new EdgeOptions(); String browserName = edgeOptions.getBrowserName(); System.out.println(browserName);//MicrosoftEdge
browserVersion
這個功能是可選的,用于在遠程端設置可用的瀏覽器版本,例如, 如果在僅安裝80版本的系統上詢問75版本的Chrome, 則會話創建將失敗
頁面加載策略
通過URL導航到新頁面時,默認情況下,Selenium將等待頁面完全加載后再進行響應。這對于初學者來說效果很好,但在加載大量第三方資源的頁面上可能會導致等待較長時間。在這種情況下,使用非默認策略可以使測試的執行速度更快,但也可能導致不穩定,即頁面上的元素隨著元素加載和大小變化而改變位置。頁面加載策略描述如下:
代碼示例
import org.openqa.selenium.PageLoadStrategy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public class pageLoadStrategy { public static void main(String[] args) { EdgeOptions edgeOptions = new EdgeOptions(); //edgeOptions.setPageLoadStrategy(PageLoadStrategy.NORMAL); //edgeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER); edgeOptions.setPageLoadStrategy(PageLoadStrategy.NONE); WebDriver webDriver = new EdgeDriver(edgeOptions); try { webDriver.get("https://www.baidu.com/"); } finally { webDriver.quit(); } } }
platformName
這標識了遠端的操作系統,獲取platformName將返回操作系統的名稱,在基于云的供應商中,設置platformName將在遠端設置操作系統
acceptInsecureCerts
這功能檢查在會話期間導航時,是否使用了過期的或者無效的TLS Certificate。
如果將其設置為false,則頁面瀏覽遇到任何域證書問題時,將返回insecure certificate error。如果設置為true,則瀏覽器將信任無效證書。
默認情況下,此功能將信任所有自簽名證書。設置后,acceptInsecureCerts功能將在整個會話中生效。
timeouts
WebDriver的session具有一定的session timeout間隔,在此間隔中,用戶可以控制執行腳本或從瀏覽器檢索信息的行為。每個會話超時都配置有不同的timeouts組合,如下3項所述
Script Timeout
指定在當前瀏覽上下文中,中斷正在執行腳本的時機。WebDriver創建新會話時,將設置默認的超時時間為30000.
Page Load Timeout
指定在當前瀏覽上下文中,加載網頁的時間間隔。WebDriver創建新會話時,默認設置超時時間為300000。如果頁面加載限制了給定(或默認)的時間范圍,則該腳本將被TimeoutException停止。
Implicit Wait Timeout
指定在定位元素時,等待隱式元素定位策略的時間。WebDriver創建新會話時,將設置默認超時時間為0。
unhandledPromptBehavior
指定當前會話user prompt handler的狀態。默認為dismiss and notify state
User Prompt Handler
這定義了在遠端出現用戶提示時必須采取的措施。該行為由unhandledPromptBehavior功能定義,具有5種狀態:dismiss,accept,dismiss and notify,accept and notify,ignore。
setWindowRect
此命令更改當前瀏覽上下文中窗口的大小和位置。此命令作為getWindowRect對應的設置方法,該命令接受width,height,x,y作為可選參數。
在自動化期間,當前瀏覽上下文將與描述瀏覽器窗口可見性狀態的窗口狀態相關聯。窗口狀態為:maximized,minimized,normal,fullscreen。
設置width或height不能保證結果窗口的大小一定完全匹配所請求的窗口大小。這是因為某些驅動程序可能無法以單像素為單位調整大小。因此,通過getWindowRect獲取窗口狀態可能與瀏覽器設置的值不匹配。
strictFileInteractability
新功能用于是否對類型為文件的輸入(input type=file) 元素進行嚴格的交互性檢查。默認關閉嚴格性檢查,在將元素的Send Keys方法作用于隱藏的文件上傳時,會有控制方面的行為區別。
proxy
代理服務器充當客戶端和服務器之間的請求中介。簡述而言,流量將通過代理服務器流向您請求的地址,然后返回。使用代理服務器用于Selenium的自動化腳本,可能對以下方面有益:捕獲網絡流量、模擬網站后端相應、在復雜的網絡拓撲結構或嚴格的公司限制/政策下訪問目標站點。
如果您在公司環境中,并且瀏覽器無法連接到URL,則最有可能是因為環境,需要借助代理進行訪問。
Selenium WebDriver設置代理代碼如下:
import org.openqa.selenium.Proxy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public class testProxy { public static void main(String[] args) { //導包注意導入selenium的Proxy包 Proxy proxy = new Proxy(); proxy.setHttpProxy("
Chromium
上述的瀏覽器所共享的功能適用于:Chrome、Chromium、Edge。
Firefox
使用FirefoxOptions定義功能
FirefoxOptions是為了Firefox瀏覽器定義功能的新方法,通常應優先使用預期功能(DesiredCapabilities)。
WebDriver webDriver; FirefoxOptions options = new FirefoxOptions(); options.addPreference("network.proxy.type", 0); webDriver = new RemoteWebDriver(options);
設置自定義配置文件
可以為Firefox創建自定義配置文件
WebDriver webDriver; FirefoxProfile profile = new FirefoxProfile(); FirefoxOptions options = new FirefoxOptions(); options.setProfile(profile); webDriver = new RemoteWebDriver(options);
Selenium
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。