摘要:[C#]Use Selenium Webdriver fetch AJAX page source
關於AJAX 頁面, 取得實際 html DOM的相關說明 , 可以參考 之前文章HtmlUnit get AJAX page source
本文將使用Selenium 提供的Webdriver , 用程式來控制以取得AJAX 處理後的html ,再利用CsQuery 從獲取的DOM中找到目標Element
Webdriver 主要是呼叫指定的瀏覽器,來載入URL, 並可進一步對這個頁面的DOM做判斷或執行某些事情 ,
很適合用來測試網頁.
首先Download Webdriver 的相關dll, 選擇C# 的Dll版本, 並加入相關dll
若要使用Chrome 來執行 , 要另外下載, Chormedriver
而使用IE 要下載IE Deriver Server
下載可得到 瀏覽器driver的 exe 檔 , 以Console 專案為例 , 需要放在專案中 bin\Debug\ 的資料夾中 ,
否則執行階段 會出現找不到相對應的瀏覽器driver 的Exception !!
至於 Firefox 部分 , 在測試時發現不需額外加入 for firefox的driver檔 , 可以直接執行~
//InternetExplorerDriver
//FirefoxDriver
using (var driver = new ChromeDriver())
{
string rqUrl = string.Format("https://tw.yahoo.com/");
driver.Navigate().GoToUrl(rqUrl);
// 取得 Loaded 頁面的DOM
CQ csQ = driver.PageSource;
var someElement = csQ["#xxDivID"];
// close cmd and browser
driver.Quit();
}
參考:
http://selenium.googlecode.com/git/docs/api/dotnet/index.html
http://docs.seleniumhq.org/
https://developer.chrome.com/devtools/docs/network

