《手把手教你》系列技巧篇(四十四)-java+ selenium自動化測試-處理https 安全問題或者非信任站點-下篇(詳解教程)


1.簡介

    這一篇宏哥主要介紹webdriver在IE、Chrome和Firefox三個瀏覽器上處理不信任證書的情況,我們知道,有些網站打開是彈窗,SSL證書不可信任,但是你可以點擊高級選項,繼續打開不安全的鏈接。舉例來說,想必大家都應該用過前幾年的12306網站購票,點擊新版購票,是不是會出現如下的界面。宏哥又找了一個https的頁面,如下圖所示:

2.三種瀏覽器如何處理不受信任的證書

三種瀏覽器訪問網頁,彈出證書不信任,需要點擊下信任繼續訪問才行,多為訪問https的網頁。那么我們在做自動化測試的時候,如何跳過這一步驟,直接訪問到我們需要的頁面了,這個就是宏哥主要分享和講解的如何在三大瀏覽器跳過這一步驟。

3.Chrome瀏覽器

3.1代碼設計

3.2參考代碼

package lessons;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;


/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(四十三)-java+ selenium自動化測試-處理https 安全問題或者非信任站點-下篇(詳解教程)
 *
 * 2021年11月12日
 */
public class SSLCertificate {
    
    public static void main(String[] args) throws Exception {
        
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--ignore-certificate-errors");
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); 
         
        // 打開帶capability設置選項的瀏覽器
        WebDriver driver=new ChromeDriver(options);
        driver.manage().window().maximize();
        driver.get("https://www.21xrx.com/");
        
    }

}

3.3運行代碼

1.運行代碼,右鍵Run AS->Java Appliance,控制台輸出,如下圖所示:

2.運行代碼后電腦端的瀏覽器的動作,如下小視頻所示:

4.小結

4.1Chrome瀏覽器遇到問題及解決辦法

1.Chrome以前遇到這種問題代碼這么寫,就可以現在就不行了,所以宏哥也換了一種方式。

package lessons;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

/**
 * @author 北京-宏哥
 * 
 * 《手把手教你》系列技巧篇(四十三)-java+ selenium自動化測試-處理https 安全問題或者非信任站點-下篇(詳解教程)
 *
 * 2021年11月12日
 */
public class SSLCertificate {
    
    public static void main(String[] args) throws Exception {
        
         // 創建DesiredCapabilities類的一個對象實例
        DesiredCapabilities cap=DesiredCapabilities.chrome();
         
        // 設置變量ACCEPT_SSL_CERTS的值為True
        cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
         
        System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); 
         
        // 打開帶capability設置選項的瀏覽器
        WebDriver driver=new ChromeDriver(cap);
        driver.manage().window().maximize();
        driver.get("https://www.21xrx.com/");
        System.out.println(" 嘿嘿!宏哥,你已經成功跳過證書信任步驟啦!");
    }

}

但是運行代碼。Chrome動作(沒有跳過證書認證這一步驟)如下視頻所示:

4.2Chrome的options參數

Chrome Options參數收集---------------------------


-

0 --purge-memory-button 在Chrome的任務管理器中增加內存清理功能 


序號    參數    說明
1    --allow-outdated-plugins     不停用過期的插件。
2    --allow-running-insecure-content     默認情況下,https 頁面不允許從 http 鏈接引用 javascript/css/plug-ins。添加這一參數會放行這些內容。
3    --allow-scripting-gallery     允許拓展腳本在官方應用中心生效。默認情況下,出於安全因素考慮這些腳本都會被阻止。
4    --disable-accelerated-video     停用 GPU 加速視頻。
5    --disable-dart     停用 Dart。
6    --disable-desktop-notifications     禁用桌面通知,在 Windows 中桌面通知默認是啟用的。
7    --disable-extensions     禁用拓展。
8    --disable-file-system     停用 FileSystem API。
9    --disable-preconnect     停用 TCP/IP 預連接。
10    --disable-remote-fonts     關閉遠程字體支持。SVG 中字體不受此參數影響。
11    --disable-speech-input     停用語音輸入。
12    --disable-web-security     不遵守同源策略。
13    --disk-cache-dir     將緩存設置在給定的路徑。
14    --disk-cache-size     設置緩存大小上限,以字節為單位。
15    --dns-prefetch-disable     停用DNS預讀。
16    --enable-print-preview     啟用打印預覽。
17    --extensions-update-frequency     設定拓展自動更新頻率,以秒為單位。
18    --incognito     讓瀏覽器直接以隱身模式啟動。
19    --keep-alive-for-test     最后一個標簽關閉后仍保持瀏覽器進程。(某種意義上可以提高熱啟動速度,不過你最好得有充足的內存)
20    --kiosk     啟用kiosk模式。(一種類似於全屏的瀏覽模式)
21    --lang     使用指定的語言。
22    --no-displaying-insecure-content     默認情況下,https 頁面允許從 http 鏈接引用圖片/字體/框架。添加這一參數會阻止這些內容。
23    --no-first-run     跳過 Chromium 首次運行檢查。
24    --no-referrers     不發送 Http-Referer 頭。
25    --no-sandbox     徹底停用沙箱。
26    --no-startup-window     啟動時不建立窗口。
27    --proxy-pac-url     使用給定 URL 的 pac 代理腳本。(也可以使用本地文件,如 --proxy-pac-url="file:\\\c:\proxy.pac"28    --proxy-server     使用給定的代理服務器,這個參數只對 http 和 https 有效。(例如 --proxy-server=127.0.0.1:808729    --single-process     以單進程模式運行 Chromium。(啟動時瀏覽器會給出不安全警告)
30    --start-maximized     啟動時最大化。
31    --user-agent     使用給定的 User-Agent 字符串

參數:--user-data-dir=UserDataDir
用途:自訂使用者帳戶資料夾(如:–user-data-dir="D:\temp\Chrome User Data")
參數:--process-per-tab
用途:每個分頁使用單獨進程
參數:--process-per-site
用途:每個站點使用單獨進程
參數:--in-process-plugins
用途:插件不啟用單獨進程

參數:--disable-popup-blocking
用途:禁用彈出攔截
參數:--disable-javascript
用途:禁用JavaScript
參數:--disable-java
用途:禁用Java
參數:--disable-plugins
用途:禁用插件
參數:–disable-images
用途:禁用圖像
參數:--omnibox-popup-count=”num”
用途:將網址列彈出的提示選單數量改為num個
參數:--enable-vertical-tabs
用途:調整chrome游覽器標簽存放在左邊,非頂部

5.擴展

5.1Safari瀏覽器(參考代碼,沒有親自實踐)

// Create object of DesiredCapabilities class
 
DesiredCapabilities cap=DesiredCapabilities.safari();
 
// Set ACCEPT_SSL_CERTS  variable to true
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
 
// Set the driver path
System.setProperty("webdriver.safari.driver","Safari driver path");
 
// Open browser with capability
WebDriver driver=new SafariDriver(cap);

6.總結

其實這一類問題,直接就用宏哥在IE瀏覽器那種執行JavaScript腳本的方法,無論遇到什么瀏覽器都可以解決的,就會這一招就可以打遍天下無敵手了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM