多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium+C#自动化脚本开发学习

更新时间:2022-04-22 09:06:52 作者:多测师 浏览:184

  1:Selenium中对浏览器的操作

  首先生成一个Web对象

  IWebDriver driver = new FirefoxDriver();

  //打开指定的URL地址

  driver.Navigate().GoToUrl(@"http://12.99.102.196:9080/corporbank/logon_pro.html");

  //关闭浏览器

  Driver.quit();

  网银浏览器兼容性测试过程中,关闭浏览器后会有对话框,此问题解决方法如下:

public void logout()

{

System.Diagnostics.Process[] myProcesses;

myProcesses = System.Diagnostics.Process.GetProcessesByName("IEXPLORE");

foreach (System.Diagnostics.Process instance in myProcesses)

{

instance.Kill();

}

}

Selenium+C#自动化脚本开发学习

  2:Selenium中执行JS脚本

  //需要将driver强制转换成JS执行器类型

  ((IJavaScriptExecutor) driver).ExecuteScript("js文件名");

  3:Selenium中定位页面元素

driver.FindElement(By.Id("cp1_btnModify")).click();

By.ClassName(className));

By.CssSelector(selector) ;

By.Id(id);

By.LinkText(linkText);

By.Name(name);

By.PartialLinkText(linkText);

By.TagName(name);

By.Xpath(xpathExpression);

  (1)根据元素id定位并操作

  //向指定的文本框输入字符串500001

  Driver.FindElement(By.Id("amount")).SendKeys("500001");

  (2)根据元素classname定位并操作

  //点击classname为指定值的按钮

  Driver.FindElement(By.ClassName(“WotherDay”)).click();

  (3)根据元素的linktext定位并操作

  Driver.FindElement(By.LinkText(“选择账号”)).click();

  (4)根据元素的Name定位并操作

  Driver.FindElement(By.Name(“quality”)).perform();

  (5)使用CssSelector定位并操作

  string order = "#resultTable.result_table tbody tr.bg1 td.center a";

  driver.FindElement (By.CssSelector(order)).click();

  (6)使用Xpath定位并元素并操作

  //使用多个属性定位元素

  Driver.FindElement(By.XPath("//input[@id='submit' and @value='下一步']")).click();

  //使用绝对路径定位元素

  string path = "/html/body/div[4]/div/div/div[2]/table/tbody/tr/td/a";

  Driver.FindElement(By.Xpath(path)).click();

  各方法使用优先原则:

  优先使用id,name,classname,link;次之使用CssSelector();最后使用Xpath();

  因为Xpath()方法的性能和效率最低下。

  4:Selenium中清空文本框中的默认内容

  //清空文本框clear()

  Driver.FindElement(By.Id("tranAmtText")).clear();

  5:Selenium中在指定的文本框中输入指定的字符串

  //在文本框中输入指定的字符串sendkeys()

  Driver.FindElement(By.Id("tranAmtText")).SendKeys(“123456”);

  6:Selenium中移动光标到指定的元素上

  //移动光标到指定的元素上perform

  Actions action=new Actions(driver);

  action.MoveToElement(Find(By.XPath("//input[@id='submit' and @value='确定']"))).Perform();

  7:Selenium中点击按钮/链接

  //点击按钮/链接click()

  Driver.FindElement(By.XPath("//input[@id='submit' and @value='下一步']")).click();

  8:Selenium中等待页面上的元素加载完成

  //等待页面元素加载完成

  //默认等待100秒

  WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(100));

  //等待页面上ID属性值为submitButton的元素加载完成

  wait.Until((d) => { return WaitForObject(By.Id("submitButton")); });

  9:Selenium中模拟鼠标晃动

  //模拟光标晃动movebyoffset()

  Actions action = new Actions(driver);

  action.MoveByOffset(2, 4);

  10:Selenium中对iframe中元素的定位

  (1)切换焦点到id为固定值的iframe上

  进入页面后,光标默认焦点在DefaultContent中,若想要定位到iframe 需要转换焦点

  driver.SwitchTo().DefaultContent();

  //切换焦点到mainFrame

  driver.SwitchTo().Frame("mainFrame");

  需要注意的是:切换焦点之后若想切换焦点到其他iframe上 需要先返回到defaultcontent,再切换焦点到指定的iframe上。

  (2)切换焦点到id值为动态值的iframe上

  有时候 页面上浮出层的id为动态值,此时需要先获取所有符合记录的iframe放置在数组中,然后遍历数组切换焦点到目标iframe上。

  如下方法:

protected string bizFrameId = string.Empty;

protected string bizId = string.Empty;

//获取动态iframe的id值

protected void SetIframeId()

{

ReadOnlyCollection<IWebElement> els = driver.FindElements(By.TagName("iframe"));

foreach (var e in driver.FindElements(By.TagName("iframe")))

{

string s1 = e.GetAttribute("id");

if (s1.IndexOf("window") >= 0 && s1.IndexOf("content") >= 0)

{

bizFrameId = e.GetAttribute("id");

string[] ss = s1.Split(new char[] { '_' });

bizId = ss[1];

}

}

}

  11:Selenium中关闭多个子Browser窗口

//获取所有的WindowHandle,关闭所有子窗口

string oldwin = driver.CurrentWindowHandle;

ReadOnlyCollection<string> windows = driver.WindowHandles;

foreach (var win in windows)

{

if (win != oldwin)

{

driver.SwitchTo().Window(win).Close();

}

}

driver.SwitchTo().Window(oldwin);

  12:Selenium中对下拉框的操作

//选择下拉框

protected void SelectUsage(string selectid, string text)

{

IWebElement select = Find(By.Id(selectid));

IList<IWebElement> AllOptions = select.FindElements(By.TagName("option"));

foreach (IWebElement option in select.FindElements(By.TagName("option")))

{

if (option.GetAttribute("value").Equals(text))

option.Click();

}

}

  13:Selenium中对confirm ,alert ,prompt的操作

//在本次浏览器兼容性测试项目中遇到的只有confirm和alert

//下面举例说明confirm和alert的代码,prompt类似

//confirm的操作

IAlert confirm = driver.SwitchTo().Alert();

confirm.Accept();

//Alert的操作

//个人网银中同样的业务有时候不会弹对alert,此时需要判断alert是否存在

//对Alert提示框作确定操作,默认等待50毫秒

protected void AlertAccept()

{

AlertAccept(0.05);

}

//等待几秒,可以为小数,单位为秒

protected void AlertAccept(double waitseSonds)

{

double nsleepMillon = waitseSonds * 1000;

int k=0;

int split=50;

IAlert alert = null;

do

{

k++;

Thread.Sleep(split);

alert = driver.SwitchTo().Alert();

} while (k * split <= nsleepMillon || alert==null);

if (alert != null)

{

alert.Accept();

}

}

  14:Selenium WebDriver的截图功能

  //WebDriver中自带截图功能

  Screenshot screenShotFile = ((ITakesScreenshot)driver).GetScreenshot();

screenShotFile.SaveAsFile("test",ImageFormat.Jpeg);

  以上内容为大家介绍了Selenium+C#自动化脚本开发学习,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部