2012-07-20 62 views
0

我希望能够在不使用NUNIT运行该应用程序,特别是因为我需要运行它每隔一小时。我是NUNIT和selenium的初学者,并且想知道我能做些什么来将其转换为控制台应用程序,而不必通过NUNIT运行它?如何在没有NUNIT的情况下让这个硒应用程序工作?

的代码如下。非常感谢你的帮助。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using NUnit.Framework; 
using Selenium; 
using System.Threading; 
using System.Data; 
using System.IO; 

namespace LogIn 
{ 
    [TestFixture] 
    public class LogIn 
    { 
     public static ISelenium selenium; 
     private StringBuilder verificationErrors; 

     [SetUp] 
     public void SetupTest() 
     { 
      selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "https://.............aspx"); 
      selenium.Start(); 
      selenium.SetSpeed("900"); 
      selenium.WindowMaximize(); 
      selenium.WindowFocus(); 
      verificationErrors = new StringBuilder(); 
     } 

     [Test] 
     public void Login() 
     { 

      selenium.SetSpeed("900"); 
      selenium.Open("/Login.aspx"); 

      Assert.AreEqual("stuff", selenium.GetTitle()); 

      selenium.Type("id=ctl00_cphBody_objLogin_UserName", "username"); 

      selenium.Type("id=ctl00_cphBody_objLogin_Password", "Pass"); 

      selenium.Click("id=ctl00_cphBody_objLogin_LoginImageButton"); 

      selenium.WaitForPageToLoad("30000"); 

      Assert.AreEqual("labs", selenium.GetTitle()); 


      //i dont understand why do we need this? 
      /* 
      try 
      { 
       Assert.AreEqual("Orders - Drug Testing ", selenium.GetText("link=Orders - Drug Testing ")); 

      } 
      catch (AssertionException e) 
      { 
       Console.WriteLine(e.Message + " " + DateTime.Now); 
      } 
      */ 

      Console.WriteLine("Congrats, you are logined successfully. " + DateTime.Now); 



      selenium.Click("link=Specimen Volume Report - Drugs"); 
      selenium.WaitForPageToLoad("30000"); 
      selenium.Click("id=ctl00_cphBody_dtpFrom"); 
      selenium.Type("id=ctl00_cphBody_dtpFrom", DateTime.Now.ToString("MM/dd/yyyy")); 
      selenium.Type("id=ctl00_cphBody_dtpTo", DateTime.Now.ToString("MM/dd/yyyy")); 
      selenium.Click("id=ctl00_cphBody_btnExport"); 
      selenium.SetSpeed("6000"); 
      Console.WriteLine("Waiting for result complete"); 
      selenium.IsTextPresent("Specimen Volume Report"); 
      selenium.IsTextPresent("Display Specimen Detail"); 

     } 

     [TearDown] 
     public void FullTearDown() 
     { 
      selenium.Stop(); 
     } 

} 

}

回答

1

作出新的控制台应用程序。导入硒驱动程序(nuget pkg应该将appium作为prereq加载)。开始编写静态空白,而不用在[测试]横幅上面。运行它们并处理您的异常,记录错误。

其实我觉得NUnit的是更多的是帮倒忙的,我是否不使用它,我有一种让长期功能/压力测试运行的问题。

葫芦,appium,任何比好老亚行更是很容易出现内存泄漏,我怀疑仅设计为更快的单元测试。

UItest云甚至把一个限制,每个设备6小时后,每个测试30分钟后,每蠡步骤10分钟。在我看来,他们设置了酒吧低得离谱,鼓励压力测试在房子做

1

为什么就不能有你的控制台应用程序(或计划任务或其他)简单地通过命令行执行NUnit的测试? (即调用NUnit控制台通过你的Selenium测试作为一个参数..)

+0

感谢这么muich你能告诉我,我怎么能做到这一点的例子>? – 2012-07-23 20:46:27

1

这对我的作品与硒的webdriver不硒RC:

using OpenQA.Selenium; 
using OpenQA.Selenium.IE; 
using OpenQA.Selenium.Support.UI; 

public static IWebDriver WebDriver; 
void Main() 
{ 
    var url = "..."; 
    var capabilitiesInternet = new OpenQA.Selenium.Remote.DesiredCapabilities(); 
    capabilitiesInternet.SetCapability("ignoreProtectedModeSettings", true); 
    IWebDriver driver = new InternetExplorerDriver(Path.GetDirectoryName (Util.CurrentQueryPath)); 

    // Navigate to url 
    driver.Navigate().GoToUrl(url); 

    // Login 
    driver.FindElement(By.Name("login")).SendKeys("..."); 
    driver.FindElement(By.Name("password")).SendKeys("..."); 
    driver.FindElement(By.ClassName("button")).Click(); 
+0

您能否提供一些必要更改的解释? – 2013-05-21 14:00:33

+0

我忘了提及要导入的名称空间:使用OpenQA等查看代码更新。我也使用selenium RC的selenium webdriver - 我认为你的代码是用于selenium RC的。 RC比Webdriver年长。 – 2013-05-21 14:24:15

相关问题