C # - Selenium - Тесты пользовательского интерфейса - IWebDriver - Ссылка на объект не установлена ​​на экземпляр объекта - PullRequest
0 голосов
/ 06 сентября 2018

для моего первого теста с c # и селеном, я хочу открыть сайт google.com, ввести что-то в поле ввода и нажать на поиск. Проблема в том, что я получаю исключение System.NullReferenceException, потому что WebDriver имеет значение Null. Но почему WebDriver нулевой?

    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"));

}

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Я бы посоветовал вам придерживаться этого: https://www.c -sharpcorner.com / UploadFile / 8a67c0 / C-Sharp-coding-coding-c-стандартов-и-наименований-соглашений /

В этом случае вы не будете смешиваться с одинаковыми именами переменных.

Итак, вторая часть вашего кода будет:

public class GooglePageObjects
{
    IWebDriver _webDriver;

    public GooglePageObjects(IWebDriver webDriver)
    {
        _webDriver = webDriver;
    }
}
0 голосов
/ 06 сентября 2018

Хорошо, я нашел ошибку. Должно быть:

this.WebDriver = WebDriver

а не:

WebDriver = this.WebDriver
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...