Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Не могу найти элементы для ввода логина и пароля на обновлённой странице

csharp
xpath
locators
selenium
webdriver
Теги: #<Tag:0x00007fedb7c55f10> #<Tag:0x00007fedb7c55dd0> #<Tag:0x00007fedb7c55c90> #<Tag:0x00007fedb7c55b00> #<Tag:0x00007fedb7c559c0>

(Chuvava) #1

Ситуация такая. Только начинаю разбираться в автотестировании.
Пишу тест(С#, Selenium WebDriver) для этого сайта http://onliner.by
Первым делом нужно пройти авторизацию. Кнопку “Вход” при помощи Xpath я нашёл на этой странице и кликнул. Затем как бы страница обновляется и на ней уже совсем другое содержимое - поля для ввода логина и пароля, а текущая ссылка при этом осталась прежней - http://onliner.by
И теперь мне нужно заполнить поля логин и пароль. Также копирую Xpath, но уже код не работает:
driver.FindElement(By.XPath("//[@id=‘auth-container__forms’]/div/div[2]/form/div[1]/div[1]/input")).SendKeys(“user”);
driver.FindElement(By.XPath("//
[@id=‘auth-container__forms’]/div/div[2]/form/div[1]/div[2]/input")).SendKeys(“password”);
driver.FindElement(By.XPath("//*[@id=‘auth-container__forms’]/div/div[2]/form/div[3]/div/button")).Click();


(Oskrypka) #2

Логин- //[@class=‘auth-box__input’ and contains(@data-bind,‘login.data.login’)]
Пароль - //
[@class=‘auth-box__input’ and contains(@data-bind,‘login.data.pass’)]


(Сергей Кобзарь) #3

А к тексту привязываться плохая практика?
//*[@id=‘auth-container__forms’]//input[contains(@placeholder,‘Ник или e-mail’)]


(Yaroslav Pernerovskyy) #4

Если сайт поддержиает локализации, то абсолютно не стоит.


(Yaroslav Pernerovskyy) #5

А можно подробнее с этого места? Как именно не работает, какую ошибку кидает?


(Chuvava) #7

Просто открывает страницу входа и дальше ничего не происходит, поля не заполняются значениями.
Ошибку в visual studio выдаёт такую:
Имя теста: FindElements_Test
Полное имя теста: ToolsQA.Selenium_Basics.FindElements_Commands.FindElements_Test
Источник теста: D:\VSProjects\ToolsQA\ToolsQA\ToolsQA\Selenium Basics\FindElements_Commands.cs : строка 16
Выходные данные теста: Сбой
Продолжительность теста: 0:00:18,304

Результат Трассировка стека:
в OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
в OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
в OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
в OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath)
в OpenQA.Selenium.By.<>c__DisplayClass19_0.b__0(ISearchContext context)
в OpenQA.Selenium.By.FindElement(ISearchContext context)
в OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
в ToolsQA.Selenium_Basics.FindElements_Commands.FindElements_Test() в D:\VSProjects\ToolsQA\ToolsQA\ToolsQA\Selenium Basics\FindElements_Commands.cs:строка 27

Результат Сообщение:
OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {“method”:“xpath”,“selector”:"//*[@id=‘auth-container__forms’]/div/div[2]/form/div[1]/div[1]/input"}
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.1.7601 SP1 x86_64)


(Chuvava) #8

Так кстати тоже не работает, поля остаются не заполненными
driver.FindElement(By.XPath("//[@class=‘auth-box__input’ and contains(@data-bind,‘login.data.login’)]")).SendKeys(“user”);
driver.FindElement(By.XPath("//
[@class=‘auth-box__input’ and contains(@data-bind,‘login.data.pass’)]")).SendKeys(“password”);


(Yaroslav Pernerovskyy) #9

Мне это говорит о том, что у вас нету ожиданий, которые ждут появления этих полей. А так как там у вас, после клика на конпку и появления собсно полей проходить некоторое время, то не удивительно, что ткст падает.

Добавте задержку. Лучше умную задержку типа WebDriverWait


(Chuvava) #10

Да, спасибо большое, всё дело в задержке)
Эта проблема решилась, столкнулся со следующей - проверка на робота)

Это как я понимаю уже более сложный вопрос - и так просто его не решишь?)


(Yaroslav Pernerovskyy) #11

Гугл научился такие капчи разгадывать с помощью AI, можете попробовать с ними посоревноваться )))


(Chuvava) #12

ладно, пока настолько глубоко лезть не буду)