Перейти к содержимому

Фотография

Нужна помощь: Тестирование формы авторизации. JavaScript

@selenium @authorization @JavaScript

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Anna_Bux

Anna_Bux

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Анна

Отправлено 12 февраля 2023 - 13:32

Доброго времени суток, уважаемые коллеги.

Начинаю осваивать автоматизацию Selenium + JavaScript

Цель - протестировать форму авторизации, используя конст. данные. Путь пользователя: зашел на страницу, кликнул кнопку "Войти" в хедере, ввел данные в инпуты логина и пароля, кликнул сабмит

 

Проблема: не ищет поле для ввода номера телефона

 

Код, который работает до этого момента:

 

const {By,Key,Builder} = require("selenium-webdriver");

require("chromedriver");
 
async function example(){
 
const USERNAME = '99999999'; //пример номера телефона
const KEY = '111222';
 
//To wait for browser to build and launch properly
let driver = await new Builder().forBrowser("chrome").build();
 
await driver.get("http://www.пример"); // тут урл
 
//To send a search query by passing the value in searchString.
await driver.findElement(By.xpath("/html/body/div[1]/header/section/div/div[2]/div[3]/button")).click();
await driver.findElement(By.xpath("/html/body/div[1]/header/div[2]/div/div/div[2]/div/div/div/div/div/div[3]/div/div/div/input")).sendKeys(USERNAME);
//It is always a safe practice to quit the browser after execution
//await driver.quit();
console.log('done')
 
}
example()

 

Предполагаю, что проблема в том, что форма авторизации открывается в модальном окне, поэтому ее не находит скрипт. Возможно, нужно какое-то доп условия, чтобы код дождался его появления или сделать триггер на клик, не знаю...

Спасибо!


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 12 февраля 2023 - 17:36

Чтобы ответить на ваш вопрос, нужно как минимум видеть код страницы. Во-вторых, локаторы, которые вы используете очень "хрупкие". Ну и наконец, не мешало бы видеть саму ошибку.


  • 0

#3 Anna_Bux

Anna_Bux

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Анна

Отправлено 13 февраля 2023 - 16:03

Чтобы ответить на ваш вопрос, нужно как минимум видеть код страницы. Во-вторых, локаторы, которые вы используете очень "хрупкие". Ну и наконец, не мешало бы видеть саму ошибку.LF

Да, конечно

 

Локаторы хрупкие, понимаю, пока иду на совсем на ощупь

 

Страница https://www.etagi.com/

 

Ошибка:


  let err = new ctor(data.message)
              ^


NoSuchElementError: no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/div[1]/header/div[2]/div/div/div[2]/div/div/div/div/div/div[3]/div/div/div/input"}
  (Session info: chrome=110.0.5481.77)
    at Object.throwDecodedError (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/error.js:524:15)
    at parseHttpResponse (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/http.js:587:13)
    at Executor.execute (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/http.js:515:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Driver.execute (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/webdriver.js:742:17)
    at async toWireValue (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/webdriver.js:144:15)
    at async /home/annabuxbaum/Selenium_Tests/node_modules/selenium-webdriver/lib/webdriver.js:194:16
    at async forEachKey (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/webdriver.js:188:9)
    at async convertKeys (/home/user/Selenium_Tests/node_modules/selenium-webdriver/lib/webdriver.js:193:3)
    at async Driver.execute (/home/user/Selenium_tests/node_modules/selenium-webdriver/lib/webdriver.js:740:22) {
  remoteStacktrace: '#0 0x557bbaf3dd93 <unknown>\n' +
    '#1 0x557bbad0c2d7 <unknown>\n' +
    '#2 0x557bbad48caa <unknown>\n' +
    '#3 0x557bbad48db1 <unknown>\n' +
    '#4 0x557bbad868f4 <unknown>\n' +
    '#5 0x557bbad6c61d <unknown>\n' +
    '#6 0x557bbad84619 <unknown>\n' +
    '#7 0x557bbad6c353 <unknown>\n' +
    '#8 0x557bbad3be40 <unknown>\n' +
    '#9 0x557bbad3d038 <unknown>\n' +
    '#10 0x557bbaf918be <unknown>\n' +
    '#11 0x557bbaf958f0 <unknown>\n' +
    '#12 0x557bbaf75f90 <unknown>\n' +
    '#13 0x557bbaf96b7d <unknown>\n' +
    '#14 0x557bbaf67578 <unknown>\n' +
    '#15 0x557bbafbb348 <unknown>\n' +
    '#16 0x557bbafbb4d6 <unknown>\n' +
    '#17 0x557bbafd5341 <unknown>\n' +
    '#18 0x7faef6d30609 start_thread\n'
}


Node.js v19.6.0


  • 0

#4 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 13 февраля 2023 - 16:48

Такой элемент есть, окно не модальное. Может попробовать поставить паузу и посмотреть, что будет?


  • 0

#5 Anna_Bux

Anna_Bux

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Анна

Отправлено 12 марта 2023 - 07:33

Такой элемент есть, окно не модальное. Может попробовать поставить паузу и посмотреть, что будет?

Добавила

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); 

перед

await driver.findElement(By.xpath("/html/body/div[1]/header/div[2]/div/div/div[2]/div/div/div/div/div/div[3]/div/div/div/input")).sendKeys(USERNAME);

Выдал ошибку TypeError: driver.manage(...).timeouts is not a function

Плохо понимаю, почему такая. Может быть стоило что-то другое применить? Пробовала через WebDriverWait, но там вообще одна ошибка - WebDriverWait is not a constructor, хотя версия драйвера последняя - 4.8.1


  • 0

#6 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 12 марта 2023 - 16:41

В качестве отладки можно временно добавить sleep(5000);


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных