es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de pasar un webelement como parámetro?

Estoy construyendo tres casos de prueba con un objeto de página que contiene tres localizadores de ID. Me pregunto si puedo pasar un localizador a un solo método para los tres casos.

Objeto de página:

public class SomeClass {

    @FindBy(how=How.CSS, using="label[for='yes']")
    private WebElement yes;

    @FindBy(how=How.CSS, using="label[for='maybe']")
    private WebElement maybe;

    @FindBy(how=How.CSS, using="label[for='no']")
    private WebElement no;

    public SomeClass(WebDriver driver) {
        super(driver);
    }

    public SomeClass clicksButtons() {
        *algún localizador*.click();
        return new SomeClass(this.driver);
    }
}

Caso de prueba:

public class SomeTest {

    @Test
    public void willClickAButton() {

        SomeClass someClass = new SomeClass(this.getDriver());

        SomeClass.clicksButtons();

        Assert.assertTrue(true);
    }
}

Me gustaría pasar un parámetro (yes, maybe o no) al método clicksButtons para poder reutilizar el método en los otros dos casos de prueba sin tener que codificarlo directamente. He buscado en Google y no he encontrado una respuesta clara.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes pasar un localizador al método clicksButtons para los tres casos. Una forma de hacerlo es cambiando la firma del método para aceptar un parámetro de tipo string, que representa el localizador a utilizar:

    public SomeClass clicksButtons(String locator) {
    switch(locator) {
    case "yes":
    yes.click();
    break;
    case "maybe":
    maybe.click();
    break;
    case "no":
    no.click();
    break;
    default:
    throw new NoSuchElementException("Localizador no encontrado: " + locator);
    }
    return new SomeClass(this.driver);
    }

    Este método utiliza una instrucción switch para determinar qué localizador usar basado en el parámetro de tipo string que se pasa. De esta manera, puedes reutilizar el método para los tres casos de prueba, pasando el localizador adecuado como parámetro.

Comments are closed.