摘要:使用圖設置瀏覽器語言為英文方法圖設置瀏覽器語言為英文方法結果功能該功能最常見的用法就是使用該功能配置屏蔽網(wǎng)站對爬蟲等自動化程序的檢測。
rf(即robotframework)是自動化測試常用的框架之一,在前端自動化測試中常與webdriver驅動器,以及rf的selenium2library庫搭配使用。selenium2library提供的open browser,close browser,click element……等關鍵字方便了廣大測試人員編寫前端自動化用例。
編寫前端自動化用例的首要原則即是模仿用戶的習慣,在瀏覽器上進行各種“點擊”、“下拉”、“滑動”等操作驗證瀏覽器返回的響應是否與用戶期望一致。但是,往往在前端自動化測試過程中會遇到進行瀏覽器設置從而使得測試用例更快、更穩(wěn)定運行的情形。例如:設置瀏覽器避開https認證,設置瀏覽器窗口大小,設置無頭瀏覽器以便Linux環(huán)境運行,設置瀏覽器下載目錄方便用例獲取下載文件等等。那么,接下來,就讓我們從問題入手,講講rf在編寫自動化用例使用webdriver啟動瀏覽器時,可以進行哪些設置。
先看幾個經(jīng)常遇到的問題
1.如何啟動無界面瀏覽器進行自動化測試?
1)問題解答
這個問題很簡單,想必大家都知道。啟動瀏覽器時添加參數(shù)—headless和—no-sandbox即可。--headless表示啟動無界面瀏覽器;--no-sandbox表示禁用沙盒模式,若在—headless模式下不添加—no-sandbox則會提示DevToolsActivePort文件不存在的錯誤。
2)rf樣例
讓我們看看rf是怎么使用—headless和—no-sandbox參數(shù)的。rf啟動瀏覽器在selenium2library中提供了兩個參數(shù):open browser和create webdriver。open browser可以看作create webdriver和go to {url}方法的一個聯(lián)合實例,可以快速啟動一個瀏覽器實例,并跳轉到指定{url}。
在此,我們講解下最簡單常用的方法添加—headless和—no-sandbox啟動瀏覽器。如下圖1所示:open browser關鍵字提供了headlesschrome和headlessfirefox兩個參數(shù)以啟動無界面的chrome和firefox瀏覽器,使用options=add_argument(‘—no-sandbox’)即可開啟禁用沙盒模式。
圖1 rf啟動無界面瀏覽器模式
2.如何繞開https認證?
1)問題解答
我們訪問https://......鏈接時通常會遇到如下圖2所示安全提示,手動操作時常用的方法有兩種:一是在瀏覽器中配置對應網(wǎng)站的安全認證證書,配置完成后再次訪問該網(wǎng)站則不會再進行安全提示;二是點擊圖2中所示的“繼續(xù)前往xxx(不安全)”,表示用戶已知且認可不安全的訪問模式。
在我們進行自動化過程中,也可以采取上傳在證書認證的方式。但是為了簡便,常用的方法是跳過安全認證——使用--ignore-certificate-errors忽略瀏覽器安全認證錯誤提示,類似于點擊“繼續(xù)前往xxx(不安全)”。
圖2 https安全提示例圖
2)rf樣例
方法如1中類似,在open browser啟動瀏覽器時傳入add_argument("--ignore-certificate-errors")即可,如下圖3所示。
圖3 rf跳過https安全提示
3.如何更改瀏覽器默認下載目錄?
1)問題解答
在webdriver啟動瀏覽器實例進行測試過程中,常??赡軙龅叫枰獮g覽器下載文件并對下載的文件進行比對、確認等操作。但瀏覽器下載目錄通常是默認配置,在無界面模式情況下,想要設置瀏覽器下載目錄為自己想要的目錄非常不易。此時,你可能需要這樣一個參數(shù)配置:download.default_directory=${your_download_path}。
2)rf樣例
如下圖4所示,使用open browser的desired_capablilities傳入{"goog:chromeOptions": {"prefs": {"download.default_directory": "D://Software//common"}}}參數(shù),設置瀏覽器下載目錄為D:/Software/common。
圖4 rf設置瀏覽器下載目錄
在rf運行過程中,截圖開啟的瀏覽器窗口,查看下載目錄,設置成功為D:/Software/common。
圖5 rf設置瀏覽器下載目錄結果
問題拓展
open browser是大家在前端自動化實現(xiàn)過程中常用關鍵字,上述3個問題,1、2是大家常見的問題,3可能使用的不是很多。但是你知道嗎,在上述舉例過程中已經(jīng)潛在的告訴了大家兩個方式來修改瀏覽器參數(shù)或拓展瀏覽器的能力:一種是使用options參數(shù);另一種是使用desired_capablilities參數(shù)。
那么,你知道這兩個參數(shù)該怎么使用嗎?兩個有什么區(qū)別嗎?
或者,你知道樣例3中更改瀏覽器下載目錄也可以如下圖這樣通過options傳參修改嗎?
圖6 rf設置瀏覽器下載目錄(使用options參數(shù))
接下來,讓我們以chromedriver為例深入的了解一下rf webdriver的功能拓展和選項配置吧~
1.何為chromedriver的功能配置
功能是你可以用來定制和配置ChromeDriver會話的選項,例如上述樣例中涉及到的無界面配置—headless,禁用沙盒模式—no-sandbox等等。
2.chromedriver功能列表有哪些
下面列舉一下可以通過options或desired_capablilities參數(shù)設置的一些常用功能。
1)args功能
參數(shù)值類型:字符串列表;是否默認配置:否。
該功能為當啟動Chrome時使用的命令行參數(shù)列表。常見的args參數(shù)有:
–user-data-dir=”[PATH]”:指定用戶文件夾User Data路徑,可以把書簽這樣的用戶數(shù)據(jù)保存在系統(tǒng)分區(qū)以外的分區(qū);
–disk-cache-dir=”[PATH]“:指定緩存Cache路徑;
–disk-cache-size= :指定Cache大小,單位Byte;
–first run:重置到初始狀態(tài),第一次運行;
–disable-javascript:禁用Javascript;
--user-agent="xxxxxxxx":修改HTTP請求頭部的Agent字符串;
--disable-plugins:禁止加載所有插件,可以增加速度;
--start-maximize:啟動就最大化‘
--lang=zh-CN 設置語言為簡體中文
……
更多Chrome參數(shù)列表可以參考https://peter.sh/experiments/chromium-command-line-switches/。
2)binary功能
參數(shù)值類型:字符串;是否默認配置:否。
Chrome可執(zhí)行文件的使用路徑。
3)extensions功能
參數(shù)值類型:字符串列表;是否默認配置:否。
在啟動時安裝的Chrome擴展列表。列表中的每一項都應該是base-64編碼打包的Chrome擴展(.crx)。
4)localState功能
參數(shù)值類型:字典;是否默認配置:否。
5)prefs功能
參數(shù)值類型:字典;是否默認配置:否。
這些首選項只應用于正在使用的用戶配置文件??梢栽诒镜?Google/Chrome/User Data/Default/Preferences?查看“Preferences”文件。如樣例3中的瀏覽器下載配置在Preferences文件中配置為:
6)detach功能
參數(shù)值類型:布爾;是否默認配置:是,默認值為false。
如果為false,當ChromeDriver被殺死時,Chrome將被退出,不管會話是否退出。如果為true, Chrome只會在會話退出(或關閉)時退出。注意,如果為true,并且會話沒有退出,ChromeDriver不能清理正在運行的Chrome實例使用的臨時用戶數(shù)據(jù)目錄。
7)debuggerAddress功能
參數(shù)值類型:字符串;是否默認配置:否。
一個要連接到的Chrome調試器服務器的地址,格式為
8)excludeSwitches功能
參數(shù)值類型:字符串列表;是否默認配置:否。
9)minidumpPath功能
參數(shù)值類型:字符串;是否默認配置:否。
minidump存儲目錄,僅在linux平臺使用。
10)mobileEmulation功能
參數(shù)值類型:字典;是否默認配置:否。
11)perfLoggingPrefs功能
參數(shù)值類型:字典;是否默認配置:否。
指定性能日志記錄首選項。
12)windowTypes功能
參數(shù)值類型:字符串列表;是否默認配置:否。
將出現(xiàn)在窗口句柄列表中的窗口類型列表。
3.如何進行chromedriver功能配置
在rf中,可以使用open browser的options參數(shù)或desired_capablilities參數(shù)進行功能設置。但值得注意的是:desired_capabilities參數(shù)要求傳入值為字典格式,而options為字符串格式。
舉例樣例可見先前舉例,此外我們挑選部分chromedriver的功能列表進行部分舉例說明。
1)args功能
針對args功能,可以有3種方法在瀏覽器啟動的時候添加功能。以修改瀏覽器—langt為例,設置瀏覽器語言為英文
·使用options=add_argument(‘—lang=en’)
圖6 rf設置瀏覽器語言為英文方法1
·注意:add_argument的方法只適用于參數(shù)在https://peter.sh/experiments/chromium-command-line-switches/列表中的參數(shù)使用,對于不在該列表中的參數(shù),調用selenium.webdriver.chrome.options中的add_experimental_option方法,增加參數(shù)傳給options,可以參考圖7所示。
·使用desired_capabilities= {"goog:chromeOptions": {"args":["--lang=en"]}}
圖7 rf設置瀏覽器語言為英文方法3
圖8 rf設置瀏覽器語言為英文方法結果
2)excludeSwitches功能
該功能最常見的用法就是使用該功能配置屏蔽網(wǎng)站對爬蟲等自動化selenium程序的檢測。例如,不適用該功能時,使用selenium啟動瀏覽器時可以在瀏覽器上方看到“Chrome正受到自動測試軟件的控制“,當我們設置 excludeSwitches 值為 enable-automation 即可功能后,則可以逃避對自動測試軟件的檢測。
?
如下圖9所示,選擇上述中第三種方法,通過desired_capablities為rf用例設置enable-automation逃避自動化測試軟件檢測方法,圖10所示為運行結果。
圖9 rf設置enable-automation方法
圖10 rf設置enable-automation運行結果
最后
本文主要在于介紹webdriver啟動瀏覽器時可以使用的一些配置功能、相應功能的參數(shù)列表以及常用的配置方法。希望能為大家在自動化測試過程中提供少許幫助~
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/121609.html
摘要:可以方便的用于功能測試兼容性測試穩(wěn)定性測試及并發(fā)測試。目前已被主流瀏覽器廠商廣泛支持,同時也是很多其它自動化測試工具比如,的底層核心技術。由簡稱四個工程組成是一個用于錄制回放測試腳本的附加組件,錄制的腳本可以生成基于的測試代碼等。 ...
摘要:一安裝二安裝你可以單獨從官方文檔中單獨下載想要的,并放置在下。下載想要的到下,如三測試右鍵填入比如,選擇類型為單擊輸入,即完成右擊填入比如內容輸入右擊填入比如,選擇,選擇,即完成創(chuàng)建右擊填入比如內容添加運行 一、安裝?robotframework-seleniumlibrary GitHub...
摘要:方式一使用安裝首先通過安裝配置國內源,在個人目錄下新建一個文件,寫入開始安裝可以幫你診斷測試環(huán)境,建議安裝。自動化測試代碼例子如下,啟動內置撥號軟件,搜索關鍵字。 前提準備 開始正文之前,你需要準備好一些基本條件: 安裝好Mac OSX 操作系統(tǒng)的設備 能夠訪問中國局域網(wǎng)以外資源的方法(沒有也行,但很痛苦) 已經(jīng)安裝好 homebrew 已經(jīng)安裝好 Python3.x 已經(jīng)安裝好 ...
摘要:閱讀原文目前測試工具有哪些項目不需要不需要端到端測試一般都需要一個容器,來運行前端應用。向快速,一致和可靠的無剝落測試問好。 閱讀原文 1. 目前E2E測試工具有哪些? 項目 Web Star puppeteer Chromium (~170Mb Mac, ~282Mb Linux, ~280Mb Win) 31906 nightmare Electron 15502 ...
摘要:難在哪里根據(jù)上面的標簽需要定位最后一行標簽,以下列出了四種方式,定位的方式多樣并不唯一,使用時根據(jù)情況進行解析即可。加入每日一練我們使用并指明標簽內全部文本即可定位。 ...
閱讀 1445·2021-10-11 11:12
閱讀 3280·2021-09-30 09:46
閱讀 1663·2021-07-28 00:14
閱讀 3160·2019-08-30 13:49
閱讀 2609·2019-08-29 11:27
閱讀 3303·2019-08-26 11:52
閱讀 628·2019-08-23 18:14
閱讀 3465·2019-08-23 16:27