[C#]Use Selenium Webdriver fetch AJAX page source

  • 903
  • 0
  • 2014-07-07

摘要:[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