Хотел бы ввести значение Dynami c в xpath в селене при использовании POM (PageFactory) - PullRequest
0 голосов
/ 24 января 2020

Я хотел бы создать метод в селене, используя PageFactory, в который я могу ввести динамический c (переменная) в xpath.

Ниже приведен класс, который я создал:

public class SelectingAnOrder {
  WebDriver driver;
  public SelectingAnOrder(){
    this.driver = driver;
   }
//    @FindBy(xpath = "(//td[contains(@class,'kPWJZB')])[5]")")
//    WebElement FindAnOrder;

  public WebElement SelectingAnOrder_selection(int var){    
     WebElement FindAnOrder = driver.findElement(By.xpath("(//td[contains(@class,'kPWJZB')])["+var+"]"));
     FindAnOrder.click();
   }

 }

Мне известно об использовании @FindBy (xpath = (// td [содержит (@ класс, 'kPWJZB')]) [ 5] ")) в самом классе, но я не могу понять, как вводить переменную в @ FindBy.

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

Мой контрольный пример выглядит следующим образом:

 WebDriver driver = DriverSetup.Driver_Setup("https://gdc1tatcweb001.../orders");

 SelectingAnOrder PickingAnOder = PageFactory.initElements(driver, SelectingAnOrder.class)
 PickingAnOder.SelectingAnOrder_selection();

Во время выполнения теста я получаю ошибка ниже. Невозможно вызвать метод findElement () для нулевого объекта

Может кто-нибудь помочь с использованием динамического c xpath в селене с использованием PageFactory? Я открыт для любых других способов или методов для реализации того же самого.

1 Ответ

1 голос
/ 24 января 2020

Код не работал, потому что я не передавал драйвер в конструкторе. Изменена строка ниже publi c SelectingAnOrder () {

на

publi c SelectingAnOrder (драйвер WebDriver) {

и все работает как ожидалось.

...