如何在没有NUNIT的情况下使用这个selenium应用程序?

时间:2012-07-20 23:14:17

标签: c# selenium nunit

我希望能够在不使用NUNIT的情况下运行此应用程序,特别是因为我需要每小时运行一次。我是NUNIT和selenium的初学者,并且想知道如何将其转换为控制台应用程序而不必通过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();
        }

}

}

3 个答案:

答案 0 :(得分:1)

为什么不简单地让您的控制台应用程序(或计划任务或其他)只通过命令行执行NUnit测试? (即,调用nunit-console将您的selenium测试作为参数传递..)

答案 1 :(得分:1)

这适用于我使用selenium webdriver而不是selenium 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();

答案 2 :(得分:1)

制作一个新的控制台应用。导入selenium驱动程序(nuget pkg应该加载appium作为先决条件)。在没有[Test]横幅的情况下开始编写静态空白。运行它们并处理异常,记录错误。

我实际上发现NUnit更多是一种障碍而不是一种帮助,无论我是否使用它我都遇到了长期功能/压力测试的问题。

Calabash,appium,除了好的旧ADB之外,很容易发生内存泄漏,我怀疑它只是为了更快的单元测试。

UItest云甚至设置了限制,每台设备6小时,每次测试30分钟,每个葫芦步骤10分钟。在我看来,他们设置了低得可笑的标准,并鼓励在内部进行压力测试