# Selenium自動開啟外部超連結 ###### tags: `note` 使用Selenium執行自動化測試時,Chrome若遇到開啟外部應用的連結(external protocol),基於安全考量,會跳出同意視窗 例如連結為`sip:youremail@domail.com`,連結至外部的Skype應用,出現下圖的彈窗 ![Skype](https://i.imgur.com/0Wayoe5.png) 確認後會開啟本機的Skype應用 雖然外觀與DOM的Confirm()相似,但此類彈窗無關HTML,屬於瀏覽器層級,無法使用WebDriver控制 ```csharp // 以下操作皆無效 browser.switchTo().confirm().accept(); browser.switchTo().window(handles[0]); ``` 自動化測試遇到此外部連結將無法繼續執行 解決辦法是在啟動瀏覽器時,用option將外部連結設為**永遠允許開啟** 程式碼如下 ```csharp var option = new ChromeOptions(); option.AddUserProfilePreference( "protocol_handler.allowed_origin_protocol_pairs", new Dictionary<string, Dictionary<string, bool>> {{ @"https://DOMAIN_TO_TEST", new Dictionary<string, bool> { { "PROTOCOL_TO_TEST", true } } }} ); using var driver = new ChromeDriver(option); ``` Ref: <https://stackoverflow.com/a/63333492>