Всем привет, я начинающий специалист не давно начал писать автотесты
и столкнулся с проблемой
На странице есть список
пытаюсь кликнуть по одному из вариантов но после клика падает исключение
Сообщение о результате:
System.NullReferenceException : Object reference not set to an instance of an object.
Код
private readonly By but1 = By.XPath("//html/body/div[1]/div/div[1]/main/section/div/form/div[1]/div/div[4]/div[4]/div/div/div");
private readonly By but2 = By.XPath("/html/body/div[1]/div/div[1]/main/section/div/form/div[1]/div/div[4]/div[4]/div/div/div[2]");
_webDriver.FindElement(but1).Click();
WebDriverWait wait = new WebDriverWait(_webDriver, TimeSpan.FromSeconds(10));
_webDriver.FindElement(but1).Click();
var butt = _webDriver.FindElements(but2).FirstOrDefault(x => x.Text == tex);
butt.Click();
Буду благодарен за любую помощь
во-первых, у вас плохие локаторы, Xpath в web-тестировании, написание и отладка, вот есть моя статья как их писать + в браузере сразу проверять их работу, но в интернете достаточно и другого
во-вторых
first or default возвращает первый элемент коллекции либо null, если коллекция пустая; по вашему второму локатору ничего не нашлось, соответственно в переменной лежит null, и вы потом пытаетесь кликнуть вникуда, отчего и нулреференс ошибка
используйте просто .First(), тогда ошибка будет сразу на поиске первого элемента
Не вижу, что там спрятано в классе Select-arrow-zone. Если там то, что я думаю, то должен сработать селектор вроде такого:
$(byClassName(“Select-arrow-zone”)).find(byText(“Заполнен”)).click();
Правда, это на селениде. Подключите селенид и жизнь заиграет новыми красками.