私は(Selenium)Unitをテストしていますが、NULLの問題が発生しています。このコードは以前は動作していましたが、現在は失敗しており、必要なフィールドに値を入力していません。誰が私に何が間違っているかもしれないかについてのいくつかの提案を与えることができますか?VS Selenium - System.ArgumentNullException:テキストをnullにすることはできません。パラメータ名:text
ユニットテスト目的:WebサービスUIをナビゲートし、結果を表示する値を入力します。
DMPage.cs
using System;
using OpenQA.Selenium;
namespace Framework.WebServicePages
{
public class DMPage
{
public static void GoTo()
{
WebServiceDriver.Instance.Navigate().GoToUrl("URL");
}
public static void Wait()
{
WebServiceDriver.Instance.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);
}
public static string IsAt
{
get
{
var title = WebServiceDriver.Instance.FindElement(By.XPath(""));
if (title != null)
return title.GetAttribute("Title");
return string.Empty;
}
}
public static ValueCommand EnterValue(string valuenum)
{
return new ValueCommand();
}
}
public class ValueCommand
{
private readonly string valuenum;
public ValueCommand()
{
this.valuenum = valuenum;
}
public void SearchValue()
{
var inputValue = WebServiceDriver.Instance.FindElement(By.XPath(""));
inputValue.SendKeys(valuenum);
var submitValue = WebServiceDriver.Instance.FindElement(By.XPath(""));
submitValue.Click();
}
}
}
DMTests.cs
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ValueMedAutomation.WebServicePages;
namespace Tests.WebServiceTestScripts
{
[TestClass]
public class DMTests
{
[TestInitialize]
public void Init()
{
WebServiceDriver.Initialize();
}
[TestMethod]
public void DM_Meds()
{
DMPage.GoTo();
DMPage.Wait();
DMPage.EnterValue("123456789").SearchValue();
DMPage.Wait();
Assert.AreEqual(DMPage.IsAt, "TEST", "Value failed.");
}
[TestCleanup]
public void Cleanup()
{
WebServiceDriver.Close();
}
}
}
エラーユニットテスト
- メッセージを実行した後:試験方法Tests.WebServi ceTestScripts.DMTests.DM_Medが例外をスローしました:
System.ArgumentNullException:テキスト - のStackTrace:
RemoteWebElement.SendKeys(文字列テキスト)
ValueCommand.SearchValue()
DMTests.DM_Med(テキストはヌル パラメータ名にはできません) - CS1717同じ変数に割り当てられました。他に何かを割り当てることを意味しましたか?
エラーのデバッグを実行している場合は、次の行が壊れ
をデバッグする場合:
L41 this.valuenum = valuenum;
L47 inputValue.SendKeys(valuenum);
はあなたがそれを設定するためにここにコンストラクタにvaluenumを渡すべきではないのですか? public ValueCommand() { this.valuenum = valuenum; } –