我的问题是,当假设由FetchName方法中的驱动程序设置firstname时,我收到一条错误消息,指出驱动程序为null。我可以以某种方式传递活动的驱动程序实例,以便继续获取数据吗?
[TestFixture]
public class TestBase
{
protected IWebDriver driverChrome;
[SetUp]
public void Setup()
{
driverChrome = new ChromeDriver();
}
[TearDown]
public void CleanSite()
{
driverChrome.Quit();
}
}
我创建所有[test]方法的类“Tests”。
public void tests: Testbase
{
[Test]
public void testmethods()
{
string blabla = driverChrome.FindElement(By.id("dsd")).Text;
Reuse.FetchName(out string firstname, out string lastname);
Assert.isTrue(firstname.equals(lastname));
}
}
一个类“重用”,其中我有[test]方法将多次使用的方法。
public class Reuse: Testbase
{
[Test]
public void FetchName(out string firstname, out string lastname)
{
firstname = driverChrome.FindElement(By.XPath("/html/body/div[2]/table/tbody[last()]/tr/td[2]/div")).Text;
lastname = driverChrome.FindElement(By.XPath("/html/body/div[2]/table/tbody[last()]/tr/td[2]/div")).Text;
}
}
答案 0 :(得分:0)
Reuse
类不是测试用例。将属性[Test]
添加到方法时,该方法应包含一个断言。因此Reuse
不应继承Testbase
。下面的示例显示了如何更改Reuse
类以及如何使用它。
public static class Reuse
{
public static IWebDriver driverChrome;
public static void FetchName(out string firstname, out string lastname)
{
firstname = driverChrome.FindElement(By.XPath("/html/body/div[2]/table/tbody[last()]/tr/td[2]/div")).Text;
lastname = driverChrome.FindElement(By.XPath("/html/body/div[2]/table/tbody[last()]/tr/td[2]/div")).Text;
}
}
你可以这样称呼它。
public void tests: Testbase
{
[Test]
public void testmethods()
{
string blabla = driverChrome.FindElement(By.id("dsd")).Text;
Reuse.driverChrome = driverChrome;
Reuse.FetchName(out string firstname, out string lastname);
Assert.isTrue(firstname.equals(lastname));
}
}