「Selenium」前端 UI 自動化測試、爬蟲程式 最佳利器

一、介紹

「Selenium」讓瀏覽器自動化的工具,可運用於爬蟲程式、前端 UI 自動化測試、Web 應用程式管理..等,支援多種語言如 C#,Java,Perl,PHP,Python..等。
範例程式將介紹如何使用 C# 語言運用 Selenium 撰寫 自動載圖程式(簡易爬蟲),讓應用程式開啟瀏覽器,前往 Google 圖片,下載 5 張 JPEG 圖檔。

二、Nuget 套件

  1. Selenium.WebDriver
  2. Selenium.WebDriver.ChromeDriver

三、教學步驟

圖一、安裝 Selenium 套件

圖二、貼上範例程式
var driver = new ChromeDriver();

//瀏覽器 轉址至 Google圖片
driver.Url = @"https://www.google.com.tw/imghp?hl=zh-TW";

//輸入關鍵字 "Selenium"
var searchInput = driver.FindElementByCssSelector(@".gLFyf");
searchInput.SendKeys("Selenium");

//按下 Enter
searchInput.SendKeys(Keys.Enter);

//抓取圖片清單
var imgTags = driver.FindElementsByTagName("img").ToList();

//取得 5張 jpeg 圖片
var images = imgTags.Select(x => x.GetAttribute("src")).Where(x => x!=null && x.StartsWith("data:image/jpeg;base64,")).Take(5).ToList();

//下載圖片
foreach(var image in images)
{
    byte[] bytes = Convert.FromBase64String(image.Replace("data:image/jpeg;base64,", ""));
    using (var ms = new MemoryStream(bytes))
    using (var jpg = Image.FromStream(ms))
    {
        jpg.Save($@"{Guid.NewGuid().ToString().Replace("-","")}.jpg", ImageFormat.Jpeg);
    }
}

//瀏覽器 關閉
driver.Close();
//結束 driver
driver.Quit();
如下畫面


圖三、建置執行檔


圖四、開啟執行檔資料夾


圖五、執行程式

圖六、執行結果

四、參考

  1. Selenium 官網

留言

這個網誌中的熱門文章

使用「LINE Messaging API」發送 line 訊息

如何傳送訊息至「Teams」的 Channel

使用「NLog」來記錄應用程式的大小事吧

asp.net 下的 JSON 套件最佳利器「Newtonsoft.Json」

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

「Katalon Recorder」簡化測試腳本撰寫的工具

使用「Line-Notify」發送 line 訊息

「Git」基礎操作

「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行