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

Ошибка нахождения элемента : no such element: Unable to locate element: {"method":"xpath","selector":"addNewButton"}


(Тимур Шаповал) #1

Привет всем. Прошу помощи по такому вопросу.Хочу сделать метод для ввода текста в требуемое поле, принимающий имя элемента и текст. Примерно так:

public void enterText(String elementName, String text){

	element(elementName).type(text);

}

Однако когда передаю в метод в качестве имени элемента “newAddress_companyNameInput”,в качестве вводимого текста “TestName1”, элемент не находится, и появляется ошибка:
no such element: Unable to locate element: {“method”:“xpath”,“selector”:“newAddress_companyNameInput”}

Если же выполняю метод так (прямо указываю имя элемента):
public void enterText(String Name) {
element(newAddress_companyNameInput).type(Name);
}
, все проходит хорошо. Такое ощущение что не получается стрингом имя элемента передать.

В чем ошибка?

Заранее признателен за помощь,


(Taras) #2

в подходе ошибка … что за локатор такой newAddress_companyNameInput ?


(Тимур Шаповал) #3

Спасибо за ответ!

Это не локатор, а имя элемента, сам элемент создан так:

@FindBy(id = “CompanyName”)
private WebElement newAddress_companyNameInput;

Видимо, проблема в том, что я передаю стринг, а надо в метод передавать наверное объект.

Вокруг чего вся идея - на странице есть 30 полей, и в каждое надо что-то вписывать. Вот и хочу сделать один метод, принимающий название поля и текст. Иначе получается что надо на каждое поле свой метод ввода писать.


(Taras) #4

проблема в том что Ви не понимаете концепции параметр, метод , клас и обьект … как Ви можете передавать в параметр селектора название переменной елемента ??


(Taras) #5

что такое element() ? что делает етот метод ?


(Тимур Шаповал) #6

Да, я только начинаю разбираться и сложности с пониманием всех соотношений конечно есть.
В проекте используется Selenium + Serenity/Thucydides, oчевидно это синтаксис этой программы.
То есть метод

public void enterText(String Name) {
element(newAddress_companyNameInput).type(Name);
}

печатает в элементе newAddress_companyNameInput требуемый текст из переменной Name.


(Taras) #7

Ну так напишите метод которий будет принимать поле - WebElement и текст String которий туда затайпать нужно


(Тимур Шаповал) #8

Тарас, спасибо большое за совет! В том проекте, в который я вникаю, WebElementы объявлены private на первой странице PageObject, методы из нее вызываются с другой страницы, которая конечно их не видит. При этом у меня пока не хватает опыта и видения картинки как достучаться до элементов - попробую с геттерами повозиться. Еще раз спасибо за совет!