C# 網頁自動化之selenium



一、什么是網頁自動化?

1. 網頁自動化是用代碼來操作瀏覽器去執行你想要操作的步驟,其實這種大多數是用於測試,用來寫自動化來測試網頁,對網站進行快速的回歸測試。

二、用到那些技術?
1. selenium:我最開始接觸該技術的時候,是用來做python爬蟲的時候,因為selenium可以很容易的對網頁數據進行分析和操作。
2. xpath: 該技術主要是針對於對頁面元素進行分析,可以根據其子元素或者父元素進行對元素的操作。
3. C#:這個是我這次用來實驗的后端語言,主要還是想看看這個語言能不能進行自動化的操作,果然還是沒有讓我失望。

三、安裝需要用到的nuget包
1. 在NuGet中下載Selenium.Chrome.WebDriver(v2.45.0)和Selenium.WebDriver(v3.141.0),然后引用using OpenQA.Selenium;和using OpenQA.Selenium.Chrome;
2. 聲明和實例一個ChromeDriver對象
IWebDriver driver = new ChromeDriver(System.AppDomain.CurrentDomain.BaseDirectory.ToString());

3. 定義事件驅動的方式有8種構造方法,具體如下:

ChromeDriver()、
ChromeDriver(ChromeDriverService service)指定初始化ChromeDriver的服務、
ChromeDriver(ChromeOptions options)指定ChromeDriver的選項、
ChromeDriver(
string chromeDriverDirectory)指定ChromeDriver.exe的目錄路徑、
ChromeDriver(ChromeDriverService service,ChromeOptions options)、
ChromeDriver(string chromeDriverDirectory,ChromeOptions options)、
ChromeDriver(ChromeDriverService service,ChromeOptions options,TimeSpan commandTimeOut)指定了命令的等待執行時間、 ChromeDriver(
string chromeDriverDirectory,ChromeOptions options,TimeSpan commandTimeOut)

4. ChromeOptions可設置的參數如下:

user-agent=“”  設置請求頭的User-Agent

window-size=1366,768  設置瀏覽器窗口大小

headless  無界面運行

start-maximized  最大化運行

incognito  隱身模式

disable-javascript  禁用javascript

disable-infobars  禁用瀏覽器正在被自動化程序控制的提示

case:

var option = new ChromeOptions();
option.AddArgument("--incognito");
option.AddArgument("headless");
option.AddArgument("disable-infobars");
IWebDriver driver = new ChromeDriver(System.AppDomain.CurrentDomain.BaseDirectory.ToString(),option);

5. 打開網址和設置元素查找時間限制: 備注 :ImplicitWait是隱形等待時間,就是表示如果一旦找到該元素,就會繼續向下執行。

driver.Navigate().GoToUrl("https://www.baidu,com");
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

6. 獲取html元素並進行操作

driver.FindElement(By.XPath("//button[@class=\"qweqwe"]")).Click();
IWebElement tryit;
tryit = driver.FindElement(By.XPath("//textarea[@class=\"qweqwad\"]"));
tryit.Clear();
tryit.SendKeys("{"wj":"qweadd"}");

第二種方式:

 driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
            driver.FindElement(By.XPath("//*[@id='kw']")).SendKeys("錦大大的博客園");
            driver.FindElement(By.Id("su")).Click();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(200);
            driver.FindElement(By.XPath("//*[@id='1']/h3/a")).Click();
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5000);

 

7. 如果返回多個就需要使用collection,引用using System.Collections.ObjectModel;
ReadOnlyCollection<IWebElement> coll = driver.FindElements(By.XPath("//*[@id=\"test"));
8. 其他一些可能使用的語句
driver.Manage().Window.Maximize();//窗口最大化
System.Threading.Thread.Sleep(1000);//等待1秒
ReadOnlyCollection<string> windows = driver.WindowHandles;
driver.SwitchTo().Window(windows[1]);//有新窗口彈出時切換

 

 

 


免責聲明!

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



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