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