我希望能够在不使用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();
}
}
}
答案 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分钟。在我看来,他们设置了低得可笑的标准,并鼓励在内部进行压力测试