Не знаю, зачем вам нужен xpath после того, как он выполнит свою работу, но вы можете сделать что-то вроде этого:
public final String xUserName = "//input[@name='user_name']";
@FindBy(xpath = xUserName)
public WebElement username;
Требуется атрибут final
.
Таким образом, вы сохраняете путь в виде строки и используете строку в вашем POM, но он по-прежнему читается как строка.Я начинаю переменную String с x
, поэтому я знаю, что String имеет формат xpath.Начните с c
для нотации CSS Selector.
Я сделал подобное по нескольким причинам:
- Фактический xpath гигантский, поэтому я разбил его на более мелкие многократно используемые строки String.,Но для этого я помечаю String как приватную.
- Мне нужно, чтобы строка передавалась другим методам Selenium, таким как созданный мной класс паузы.
Но чтобы ответить на прямой вопрос, нет , вы не можете получить xpath из переменной POM, потому что эта информация не сохраняется.Переменная является WebElement и не имеет значения, каким методом вы ее назначили.Это все равно, что спросить, как была создана строка.