prem yadav Ответов: 1

Я получаю ошибку при поиске элемента в selenium webdriver


приведенный выше код - это мой html-код текстового поля пароля, так как я могу найти элемент с помощью xpath

Что я уже пробовал:

Я пытаюсь автоматизировать свое веб-приложение, поэтому при поиске элемента пароля я получаю "FAILED: login
орг.openqa.селен.ElementNotVisibleException: элемент в данный момент не виден и поэтому не может взаимодействовать с ним.
Продолжительность команды или тайм-аут: 10,59 секунды"
Пожалуйста, помогите мне решить эту проблему

Dave Kreskowiak

МММ... "Вышеприведенный код" где?

prem yadav

www.servicesathi.com на этом веб-сайте я пытаюсь автоматизировать свой проект... в этом перейдите к регистрации и этот код для пароля подан

1 Ответов

Рейтинг:
1

David_Wimbley

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

* У вас есть два текстовых поля пароля без идентификаторов. Это прекрасно, но это делает его чрезвычайно трудным для цели
* У вас есть два текстовых поля пароля, 1 для входа в систему, 1 для регистрации. Вы указали в своих комментариях, что получаете ошибку на странице регистрации, говоря, что элемент скрыт. Это происходит потому, что он нацелен на первое текстовое поле под логином, а не на второе под регистрацией

Вы не указываете на каком языке вы используете selenium поэтому я приведу свои примеры на C#

Насколько я понимаю, у вас есть два решения

1) добавьте уникальные идентификаторы в два текстовых поля пароля, которые у вас есть. например, текстовый файл-логин-инвалидов на экране входа в систему и затем тхт-Регистрация-дуо для регистрации пароль модальное окно.

Таким образом, в selenium вы можете просто нацелиться на него, сделав driver.FindElement(By.Id("txt-login-pwd")); или driver.FindElement(By.Id("txt-registration-pwd"));.

2) Если у вас есть полный контроль над этим сайтом, Я не знаю, почему бы вам просто не добавить идентификаторы в текстовые поля пароля, но в том случае, если вы чувствуете себя против этого, это ваш другой вариант, который полностью больше работы, чем просто добавление идентификаторов в ваши два текстовых поля пароля.

Чтобы понять, что я имею в виду, вы должны найти что-то, что делает ваши текстовые поля пароля уникальными, и единственное, что я вижу, - это type="password". Вам нужно будет выяснить правильный синтаксис XPATH для этого.

Обратите внимание, что я печатаю это по памяти, так что он может компилироваться или не компилироваться, но код укажет вам правильное направление

var pwdTextBoxes = driver.FindElements(By.Xpath("//input[@type='password']"));
var count = pwdTextBoxes.Count();


В этот момент Вы увидите cound следует сказать 2. Это из-за ваших текстовых полей входа/регистрации.

Вам нужно будет знать, какой индекс списка/массива pwdTextBoxes предназначен для экрана регистрации и входа в систему соответственно. Оттуда вы сможете найти правильный.

Пример: var loginPwdTxtBox = pwdTextBoxes[0]; это будет текстовое поле логин пароль и затем var registrationPwdTxtBox = pwdTextBoxes[1]; указывает на текстовое поле регистрации, и вы можете предпринять над ним любые действия, которые вам понадобятся в данный момент.