日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

自动化测试:Selenium webdriver 学习笔记-C#版(四)

發布時間:2025/4/9 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动化测试:Selenium webdriver 学习笔记-C#版(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  前面我們知道了如何進行對象的定位,下面我們進一步來了解selenium的一些功能特性:

?

1>等待:我們在處理對象的時候,對象并不能及時的“出現”,那么此時我們就需要進行等待了。

driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(20)); //這里的20,是以"s" 為單位,這里的數值可以根據實際情況來設置,

  

???? 還有一種等待方式:使用WebDriverWait對象,同樣強大。

public IWebElement WaitForElement(IWebDriver driver, string el_id,int timeout) //找到元素就返回 {IWebElement ele = null;try{WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeout));ele = wait.Until<IWebElement>((d) =>{return d.FindElement(By.Id(el_id));}); }catch{Console.WriteLine("12e");}return ele;}

?

 

2>獲取窗體句柄:

driver.CurrentWindowHandle

?

3>窗體轉換:

driver.SwitchTo().Window();

?

4>使用Actions

var xx = driver.FindElement(By.Id("id")); Actions builder = new Actions(driver); builder.MoveToElement(xx).Perform();

?

5>根據鏈接文本定位對象(不太適用本地化測試)

driver.FindElement(By.PartialLinkText("登錄"));

?

6>處理彈出框

driver.SwitchTo().Alert().Accept()//簡單講就是點擊yes driver.SwitchTo().Alert().Dismiss()//點擊No

?

?7>判斷頁面字符串

driver.PageSource.Contains("any word;");

?

?

?

下面來看具體的實例:

登陸百度首頁->搜索“博客園”->登陸博客園->退出->處理彈出框

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; //添加selenium的引用 using OpenQA.Selenium; using OpenQA.Selenium.IE; using OpenQA.Selenium.Support.UI;using OpenQA.Selenium.Interactions; //添加引用-在程序集中添加System.Drawing using System.Drawing; using System.Drawing.Imaging;namespace Selenium {class Program{static void Main(string[] args){//此時記得添加路徑 using (var driver = new InternetExplorerDriver(@"D:\Selenium\IEDriverServer_x64_2.34.0\")){//進入百度首頁driver.Navigate().GoToUrl(@"http://www.baidu.com");Thread.Sleep(1000);
//是否包含"百度"這個字符串,可以用來判斷頁面是否出現
if (driver.PageSource.Contains("百度"))
{ Console.WriteLine(" 123");

} //設置窗體最大化 driver.Manage().Window.Maximize();Thread.Sleep(1000);//找到對象 var colSearchBox = driver.FindElementsByName("wd");var btnClick = driver.FindElement(By.Id("su1"));//發送搜索內容colSearchBox[1].SendKeys("bokeyuan");//Thread.Sleep(1000);//等待搜索結果WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));IWebElement searchResutl = null;try{searchResutl = wait.Until<IWebElement>((d) =>{return d.FindElement(By.ClassName("bdsug"));});}catch(Exception e){Console.WriteLine("Timeout to find element:" + " "+ e.Message.ToString());}//搜索結果數量var searchResult_Children = searchResutl.FindElements(By.TagName("li"));foreach (IWebElement child in searchResult_Children){if (child.Text.Equals("博客園")){ //選擇正確的搜索對象 child.Click();break;}}//設置頁面加載時間driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(20));//獲取當前頁面句柄 ,適用于一個窗體//var cc = driver.CurrentWindowHandle;//進入首頁var homePage = driver.FindElement(By.ClassName("result"));var homePage_child = homePage.FindElement(By.Id("1"));homePage_child.FindElement(By.ClassName("favurl")).Click();//設置頁面加載時間driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(20));//獲取當前網頁的句柄,使用與多個窗體//那么我們需要的是第二個窗體var currentWindowHandle = driver.WindowHandles[1];//因為要現在要處理的對象在新窗體上,所以這里要進行窗體轉換 driver.SwitchTo().Window(currentWindowHandle);//下面將鼠標移動到左邊的".Net技術",此時會滑出相應的模塊//用XPath定位對象,此處找到"新手區"//移動鼠標var xx = driver.FindElement(By.Id("cate_item_108698"));Actions builder = new Actions(driver);builder.MoveToElement(xx).Perform();Thread.Sleep(2000);//使用XPath 找對象//driver.FindElement(By.Id("cate_sub_block")).FindElement(By.XPath("//div[1]/div[2]/ul[1]/li[1]/a[@href='/cate/beginner/']")).Click();//div[1]第一個div//上面的比較"笨重",下面的簡單多了driver.FindElement(By.Id("cate_sub_block")).FindElement(By.XPath("//a[@href='/cate/beginner/']")).Click();//登陸//使用PartialLinkText定位對象var btnLogin1 = driver.FindElement(By.PartialLinkText("登錄"));btnLogin1.Click();var txtUserName = driver.FindElement(By.Id("tbUserName"));txtUserName.SendKeys("Alvin-x");var txtPassword = driver.FindElement(By.Id("tbPassword"));txtPassword.SendKeys("123456");var btnLogin2 = driver.FindElement(By.Id("btnLogin"));btnLogin2.Click();Thread.Sleep(2000);//使用CssSelector定位對象//點擊“退出”var btnBackup = driver.FindElement(By.CssSelector("a[href='#']"));btnBackup.Click();//等待彈出框彈出后再處理它 Thread.Sleep(1000);IAlert result = null;while (1 < 2){try{result = driver.SwitchTo().Alert();}catch (Exception){result = null;}if (result != null){result.Accept();break;}}//退出 driver.Quit();}}} }

?

?

?

  ?

?

轉載于:https://www.cnblogs.com/Alvin-x/p/3559951.html

總結

以上是生活随笔為你收集整理的自动化测试:Selenium webdriver 学习笔记-C#版(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。