Tengo un marco que estoy construyendo desde cero usando pepino webdriver-IO y javascript. Tengo un control desplegable para seleccionar y solo puedo seleccionar la opción basada en 'text()='
Estoy tratando de incluir una llamada de función en mi esquema de escenario e incluir esto en la tabla en línea
Por favor, hágamelo saber si esto es posible?
Scenario Outline: Generate a standard quote Given I am a potential client When I enter <age> <income> <smoker> <education> <gender> AND I perform the action Calculate Then I am presented with a quote Examples: | age | income| smoker | education | gender | | 22 | 30000 | ddlText.NoSmoker | ddlText.edu3YearDip | ddlText.genderMale | | 22 | 30000 | ddlText.YesSmoker| ddlText.edu4YearDip | ddlText.genderFemale|Tengo una clase getter y el motivo de este enfoque es que los controles no tienen identificadores, no es un par ak/v y solo puedo encontrar el texto cuando selecciono de una lista desplegable. Así que tenga en cuenta arriba en la tabla en línea que estoy tratando de llamar a ddlText.NoSmoker y mi implementación luego hará la selección en función del valor de la tabla en línea
class ddlText{ get NoSmoker(){ return $("//*[text()='No']") }Intentar programar en pepinillo es una muy mala idea. Gherkin no es un lenguaje de programación, es un lenguaje natural limitado diseñado para expresar intenciones. Entonces, tratar de poner cosas como llamadas a funciones en Gherkin solo te causará dolor.
En segundo lugar, evite los esquemas de escenarios. Es mucho mejor escribir algunos escenarios simples que un esquema de escenario complejo. El arte de usar Cucumber es mantener sus funciones lo más simples posible. Reduzca su complejidad a las definiciones de los pasos o, mejor aún, a los métodos auxiliares o al código de su aplicación.
Entonces, en lugar de hacer un esquema de escenario para generar cotizaciones. Haz varios escenarios, uno para cada tipo de cotización.
Scenario: Smoker quote Given I am a smoker When I enter my details Then I should get a quote Scenario: Non smoker quote Given I am a non smoker When I enter my details Then I should get a quoteLuego use las definiciones de pasos para determinar cómo usar su control de selección.
When "I enter my details" do ... @i.smoker? ? select smoker : select non_smoker ... endDebido a que sus definiciones de pasos están en un lenguaje de programación, puede hacer cosas inteligentes como
@i es una persona.objeto creado en el Dado ¿quién tiene un método fumador?
Ahora sus características son simples y su complejidad está en el código donde tiene el poder de hacer lo que quiera.