Как обрабатывать динамические элементы в объектной модели страницы в Selenium? - PullRequest
0 голосов
/ 31 октября 2018

Возможно ли обрабатывать динамические элементы в объектной модели страницы?

Пример:

package pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;

public class Home_Page {
    WebDriver driver;

    public Home_Page(WebDriver driver) {
        this.driver = driver;
    }

    @FindBy(how=How.XPATH, using = "//input[@name = '%s']")
    public WebElement inputField;
}

Я хочу передать значение атрибута имени ввода из моего метода тестирования.

package scripts;

@Test
public void test(){
        driver.get("http://play.krypton.infor.com");
        Home_Page homepage = PageFactory.initElements(driver, Home_Page.class);
        homepage.inputField.sendKeys("xpathParameter", "sendKeysVal"); 
}

1 Ответ

0 голосов
/ 31 октября 2018

Невозможно реализовать желаемый способ, поскольку в Java нет способа динамически передавать значение в аннотацию - Значения аннотаций Java предоставляются в динамическом режиме .

Однако вы можете добиться того же, заменив | поле класса + аннотация | с | методом |:

package pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;

public class Home_Page {
    WebDriver driver;

    public Home_Page(WebDriver driver) {
        this.driver = driver;
    }

    public WebElement inputField(String name) {
       return this.driver.findElement(String.format(By.xpath("//input[@name = '" + name + "']");
    }
}


package scripts;

    @Test
    public void test(){
        driver.get("http://play.krypton.infor.com");
        Home_Page homepage = PageFactory.initElements(driver, Home_Page.class);
        homepage.inputField("xpathParameter").sendKeys("sendKeysVal"); 
    }
...