Есть ли способ получить xpath элемента, хранящегося в соответствии с объектной моделью страницы, из отдельного файла? - PullRequest
0 голосов
/ 22 февраля 2019

Предположим, я сохранил WebElment в LoginPage.java классе, как показано ниже.

@FindBy(xpath="//input[@name='user_name']") WebElement username;

Теперь из моего тестового файла произнесите VerifyLogin.java Я хочуполучить доступ к xpath имени пользователя, которое хранится в файле LoginPage.java что-то вроде этого

LoginPage loginPage = PageFactory.initElements(driver, LoginPage.class);
loginPage.username;//then it should return the xpath //input[@name='user_name']

Я знаю, что описанный выше подход неверен, но есть ли способ получить только такой путь xpathбыл сохранен в файле LoginPage, который я могу использовать в файле VerifyLogin?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Не знаю, зачем вам нужен xpath после того, как он выполнит свою работу, но вы можете сделать что-то вроде этого:

public final String xUserName = "//input[@name='user_name']";
@FindBy(xpath = xUserName)
public WebElement username;

Требуется атрибут final.

Таким образом, вы сохраняете путь в виде строки и используете строку в вашем POM, но он по-прежнему читается как строка.Я начинаю переменную String с x, поэтому я знаю, что String имеет формат xpath.Начните с c для нотации CSS Selector.

Я сделал подобное по нескольким причинам:

  1. Фактический xpath гигантский, поэтому я разбил его на более мелкие многократно используемые строки String.,Но для этого я помечаю String как приватную.
  2. Мне нужно, чтобы строка передавалась другим методам Selenium, таким как созданный мной класс паузы.

Но чтобы ответить на прямой вопрос, нет , вы не можете получить xpath из переменной POM, потому что эта информация не сохраняется.Переменная является WebElement и не имеет значения, каким методом вы ее назначили.Это все равно, что спросить, как была создана строка.

0 голосов
/ 22 февраля 2019

Если вам это нужно за пределами объекта страницы, тогда ваш дизайн не так хорош.

В любом случае, если вы действительно этого хотите, вам следует выполнить следующие действия:

@FindBy(xpath="//input[@name='user_name']") 
public WebElement username;

new YourPageObject().username;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...