Java类级字段的C#等价物

Java类级字段的C#等价物,java,c#,selenium,webdriver,Java,C#,Selenium,Webdriver,我对C#的认识比对Java的认识要新,我正在尝试将我的一些Java自动化测试转换为C#。 我的问题是关于以下代码: public class UnitTest1 { [Test] public void loginTest() { //path variable points to the chrome driver exe bin location var path = Path.GetDirectoryName(Assembly.Ge

我对C#的认识比对Java的认识要新,我正在尝试将我的一些Java自动化测试转换为C#。
我的问题是关于以下代码:

public class UnitTest1
{ 
    [Test]
    public void loginTest()
    {
        //path variable points to the chrome driver exe bin location
        var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        //pass the path to our new driver
        var driver = new ChromeDriver(path);
        //then pass the driver to our page object + add IWebdriver as a 
        //param to HomepageClass obj
        var homePage = new HomePage(driver);

        homePage.goTo();
    }
}
这段代码实例化了一个新的chrome驱动程序,并在homepage对象上调用了一个简单的goTo方法。它还将驱动程序传递给主页对象,允许驱动程序以其他方式与页面对象交互

当前编写代码的方式意味着我必须为我计划编写的每个未来测试重新创建局部变量。 以与Java类似的方式,我希望在类级别使用与字段等效的内容,以便在类中的多个测试中重用这些字段。有人能告诉我怎么做吗

到目前为止,我所尝试的:

我尝试在类级别将变量更改为对象,并在设置方法中初始化它们,如下所示:

public class UnitTest1
{
    object homePage;
    object path;
    object driver;

    [SetUp]
    public void startDriver()
    {
        //path variable points to the chrome driver bin location
        path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        //pass the path to our new driver
        driver = new ChromeDriver(path);
        //then pass the driver to our page object + add 
        //IWebdriver as a param to HomepageClass obj
        homePage = new HomePage(driver);
    }

    [Test]
    public void loginTest()
    {
        homePage.goTo();
    }
}
这产生了以下错误,我设法修复了其中一些错误,如下所示:

参数1:无法从“object”转换为“OpenQA.Selenium.Chrome.ChromeOptions”

状态:固定方式:更改:
对象路径
色度选项路径

无法将类型“string”隐式转换为“OpenQA.Selenium.Chrome.ChromeOptions”

状态:尚未修复。这是由于修复了第一个错误而生成的

参数1:无法从“object”转换为“OpenQA.Selenium.IWebDriver”

状态:固定方式:更改
对象驱动程序
IWebdriver

“object”不包含“goTo”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“goTo”(是否缺少using指令或程序集引用?)

状态:尚未修复


任何建议都值得赞赏

请注意,这是未经测试的,并且仅基于您的错误:

返回一个
字符串
,而不是
对象路径
色度选项路径
应该是
字符串路径取而代之

关于你上次引用的错误:

“object”不包含“goTo”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“goTo”(是否缺少using指令或程序集引用?)

这意味着您当前正在尝试使用
对象主页上的
.goTo
,而
对象
-类显然没有任何
goTo
方法。
这可以通过更改
对象主页来解决
主页
,或者更改
主页.goTo()
((主页)主页).goTo()(我建议第一个)

不确定第一个引用的错误来自何处,因为我在您的
startDriver()
方法中没有看到任何
ChromeOptions
,但我也会更改
对象驱动程序
色度驱动程序


TL;医生:

更改:

object homePage;
object path;
object driver;
致:


注:当您在类级别上使用
对象
变量而不在代码中使用强制转换时,Java中也会出现类似的错误。

请注意,这是未测试的,并且仅基于您的错误:

返回一个
字符串
,而不是
对象路径
色度选项路径
应该是
字符串路径取而代之

关于你上次引用的错误:

“object”不包含“goTo”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“goTo”(是否缺少using指令或程序集引用?)

这意味着您当前正在尝试使用
对象主页上的
.goTo
,而
对象
-类显然没有任何
goTo
方法。
这可以通过更改
对象主页来解决
主页
,或者更改
主页.goTo()
((主页)主页).goTo()(我建议第一个)

不确定第一个引用的错误来自何处,因为我在您的
startDriver()
方法中没有看到任何
ChromeOptions
,但我也会更改
对象驱动程序
色度驱动程序


TL;医生:

更改:

object homePage;
object path;
object driver;
致:


PS:当您在类级别上使用
对象
变量而不在代码中使用强制转换时,Java中也会出现类似的错误。

您收到的第一个错误:

参数1:无法从“object”转换为“OpenQA.Selenium.Chrome.ChromeOptions”

不是告诉您将path变量的类型更改为
ChromeOptions
,而是告诉您
ChromeDriver
构造函数采用
ChromeOptions
类型,而不是通用的
对象

对于这一点,文档是不错的,并且在处理不熟悉的类型时,应该始终首先查看文档()

根据
ChromeOptions
的文档,您可以通过执行以下操作指定Chrome二进制文件的路径:

ChromeOptions options = new ChromeOptions()
options.setBinary(new File(path));
如果您想这样做,您可以将options变量移动到类级别并初始化一次


扩展Kevin的答案-除非绝对必要,否则通常最好不要简单地将某个对象声明为对象,因为如果不先将其强制转换,您将无法对
对象调用任何特定于类型的方法

参数1:无法从“object”转换为“OpenQA.Selenium.Chrome.ChromeOptions”

不是告诉您将path变量的类型更改为
ChromeOptions
,而是告诉您
ChromeDriver
构造函数采用
ChromeOptions
类型,而不是通用的
对象

对于这一点,文档是不错的