0

我希望能够在不使用 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();
        }

}

}

4

3 回答 3

1

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

于 2012-07-23T20:44:40.807 回答
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();
于 2013-05-21T13:43:22.677 回答
1

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

实际上,我发现 NUnit 与其说是一种帮助,不如说是一种障碍,无论我是否使用它,我在运行长期功能/压力测试时都遇到了问题。

Calabash,appium,除了好的旧 ADB 之外的任何东西都非常容易出现内存泄漏,我怀疑它只是为更快的单元测试而设计的。

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

于 2017-12-06T22:53:31.693 回答