C# - Selenium - UI测试 - IWebDriver - 未设置为对象实例的对象引用

问题描述 投票:0回答:2

对于我的第一个使用c#和selenium的测试用例,我想打开google.com网站,在输入字段中输入内容并单击搜索。问题是,我得到一个System.NullReferenceException,因为WebDriver是Null。但为什么WebDriver为null?

    public class Base
{

    public IWebDriver WebDriver;
    public GooglePageObjects GooglePO;
    public PageActions PageAction;
    public Base()
    {
        WebDriver = new ChromeDriver(@"C:\ChromeDriver");
        GooglePO = new GooglePageObjects(WebDriver);
        PageAction = new PageActions(WebDriver);
    }
}

public class GooglePageObjects
{
    IWebDriver WebDriver;

    public GooglePageObjects(IWebDriver WebDriver)
    {
        WebDriver = this.WebDriver;
    }

    public IWebElement SearchField => WebDriver.FindElement(By.CssSelector("#gs_lc0 #lst-ib"));
    public IWebElement SearchButton => WebDriver.FindElement(By.CssSelector("#gs_lc0 #lst-ib"));
    public IWebElement SearchBar => WebDriver.FindElement(By.CssSelector("#hdtb-s #hdtb-msb"));

}
c# visual-studio selenium
2个回答
1
投票

好的,我发现了错误。它应该是:

this.WebDriver = WebDriver

并不是:

WebDriver = this.WebDriver

0
投票

我建议你这样做:https://www.c-sharpcorner.com/UploadFile/8a67c0/C-Sharp-coding-standards-and-naming-conventions/

在这种情况下,您不会混淆相同的变量名称。

因此,代码的第二部分将是:

public class GooglePageObjects
{
    IWebDriver _webDriver;

    public GooglePageObjects(IWebDriver webDriver)
    {
        _webDriver = webDriver;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.