今天突然想了解下Selenium。虽然很久以前,有特意学过Selenium,也用C#写入测试样例,但由于那时什么都没有记录下来,之前积累的经验为0了。以后对自己做过的项目,学过的技术,过一段时间后,要进行总结。
自己写的 StartSelenium.bat 脚本
java -jar "D:Selemiumselenium-server-standalone-2.28.0.jar" -trustAllSSLCertificates
自己写的测试样例:
usingSystem;usingSystem.Text;usingSystem.Text.RegularExpressions;usingSystem.Threading;usingNUnit.Framework;usingOpenQA.Selenium;usingOpenQA.Selenium.Firefox;usingOpenQA.Selenium.Support.UI;namespaceSeleniumTests { [TestFixture]public classLogin {privateIWebDriver driver;privateStringBuilder verificationErrors;private stringbaseURL;private bool acceptNextAlert = true; [SetUp]public voidSetupTest() { driver = newFirefoxDriver(); baseURL = "https://*/login.php"; verificationErrors = newStringBuilder(); } [TearDown]public voidTeardownTest() {try{ driver.Quit(); }catch(Exception) {//Ignore errors if unable to close the browser} Assert.AreEqual("", verificationErrors.ToString()); } [Test]public voidTheLoginTest() { driver.Navigate().GoToUrl(baseURL + "/login.php?action=logout"); driver.FindElement(By.Id("username")).Clear(); driver.FindElement(By.Id("username")).SendKeys("***"); driver.FindElement(By.Id("password")).Clear(); driver.FindElement(By.Id("password")).SendKeys("***"); driver.FindElement(By.Name("Per_sel_bu1")).Click(); driver.FindElement(By.LinkText("IDC管理")).Click();//ERROR: Caught exception [ERROR: Unsupported command [selectFrame | if_sidebar | ]]driver.FindElement(By.LinkText("排班管理")).Click(); driver.FindElement(By.LinkText("设备管理")).Click(); }private boolIsElementPresent(By by) {try{ driver.FindElement(by);return true; }catch(NoSuchElementException) {return false; } } private stringCloseAlertAndGetItsText() {try{ IAlert alert =driver.SwitchTo().Alert();if(acceptNextAlert) { alert.Accept(); } else{ alert.Dismiss(); }returnalert.Text; } finally{ acceptNextAlert = true; } } } }
看到里面有个方法:CloseAlertAndGetItsText,应该是关闭浏览的 alert ,并获取 alert 里面的文本。虽然Greasemonkey也可以实现部分Selenium的功能,但从这个函数看来,Selenium比Greasemonkey强多了。
Selenium IDE 比较简单,能够录制视频。