Kotlin, pepino y selenio - Kotlin no puede interactuar con el (los) elemento (s) -- selenium campo con intellij-idea campo con kotlin campo con cucumber camp Relacionados El problema

Kotlin, Cucumber and Selenium - Kotlin not able to interact with element(s)


0
vote

problema

Español

Estoy tratando de crear una prueba simple en IntelliJ, usando Kotlin en lugar de Java, junto con pepino y selenio. Sin embargo, no parece ser tan recto, ya que tú. He instalado Kotlin y lo he configurado para el proyecto, y no hay mensajes de error relacionados con eso.

Sin embargo, solo una cosa simple como hacer clic en un botón de radio I Una lista parece ser difícil de lograr en Kotlin. No hay ningún mensaje de error; El clic simplemente no sucede.

La línea de pepino:

  Og jeg har et konkret boligprosjekt   

la definición del paso (java):

  @Og("^jeg har et konkret boligprosjekt$") public void jegHarEtKonkretBoligprosjekt() {     //oppforePage.velgKonkretBoligprosjekt();          <-- Java     OppforePageK.Companion.velgKonkretBoligprosjekt(); <-- Kotlin }   

El objeto de página de Java (que funciona como se esperaba):

  @Slf4j public class OppforePage {     import org.openqa.selenium.By;     import org.openqa.selenium.WebElement;     import org.openqa.selenium.support.FindBy;     import org.openqa.selenium.support.PageFactory;      private static WebElement lblsokerOmboligprosjekt;      private ExtendedWebDriver driver;       public OppforePage() {         this.driver = Browser.extendedDriver();         PageFactory.initElements(driver, this);     }      void velgKonkretBoligprosjekt() { lblsokerOmboligprosjekt.click(); }  ...   

El objeto de página de Kotlin (que no funciona):

  import no.husbanken.e2e.rammeverk.selenium.driver.ExtendedWebDriver import org.openqa.selenium.WebElement import org.openqa.selenium.support.FindBy import org.openqa.selenium.support.PageFactory  class OppforePageK() {     companion object {         var driver: ExtendedWebDriver = Browser.extendedDriver()          @FindBy(id = "lblsokerOmboligprosjekt")         private val lblsokerOmboligprosjekt: WebElement? = null          init {             PageFactory.initElements(driver, this)         }          fun velgKonkretBoligprosjekt() {             lblsokerOmboligprosjekt?.click()         }     } }   

(he eliminado algunas de las importaciones obvias, etc.)

Cuando Kotlin intenta hacer clic en el botón con el método VelgkonkretbolInPROSJEKT (), no pasa nada en la página. Sin embargo, no hay un mensaje de error, y la prueba continúa y falla en un paso posterior porque no se hizo clic en el botón.

¿Alguna idea? Sé que debería ser posible usar a Kotlin para esto, pero parece que estoy llegando constantemente en paredes pequeñas donde no puedo averiguar por qué aparecen cosas pequeñas y simples simplemente no funciona como si creo que la voluntad.

Original en ingles

I'm trying to create a simple test in IntelliJ, using Kotlin instead of Java, along with Cucumber and Selenium. However, it doesn't seem to be as straight-foward as I thouht. I've installed Kotlin and configured it for the project, and there are no error messages related to that.

However, just a simple thing like clicking on a radio button i a list seems to be difficult to achieve in Kotlin. There is no error message; The click just doesn't happen.

The Cucumber line:

Og jeg har et konkret boligprosjekt 

The (Java) step definition:

@Og("^jeg har et konkret boligprosjekt$") public void jegHarEtKonkretBoligprosjekt() {     //oppforePage.velgKonkretBoligprosjekt();          <-- Java     OppforePageK.Companion.velgKonkretBoligprosjekt(); <-- Kotlin } 

The Java Page Object (which works as expected):

@Slf4j public class OppforePage {     import org.openqa.selenium.By;     import org.openqa.selenium.WebElement;     import org.openqa.selenium.support.FindBy;     import org.openqa.selenium.support.PageFactory;      private static WebElement lblsokerOmboligprosjekt;      private ExtendedWebDriver driver;       public OppforePage() {         this.driver = Browser.extendedDriver();         PageFactory.initElements(driver, this);     }      void velgKonkretBoligprosjekt() { lblsokerOmboligprosjekt.click(); }  ... 

The Kotlin Page Object (which doesn't work):

import no.husbanken.e2e.rammeverk.selenium.driver.ExtendedWebDriver import org.openqa.selenium.WebElement import org.openqa.selenium.support.FindBy import org.openqa.selenium.support.PageFactory  class OppforePageK() {     companion object {         var driver: ExtendedWebDriver = Browser.extendedDriver()          @FindBy(id = "lblsokerOmboligprosjekt")         private val lblsokerOmboligprosjekt: WebElement? = null          init {             PageFactory.initElements(driver, this)         }          fun velgKonkretBoligprosjekt() {             lblsokerOmboligprosjekt?.click()         }     } } 

(I've removed some of the obvious imports etc.)

When Kotlin tries to click the button with the velgKonkretBoligprosjekt() method, nothing happens on the page. There is no error message, however, and the test continues and fails on a later step because the button wasn't clicked.

Any ideas? I know it should be possible to use Kotlin for this, but I seem to be constantly running into small walls where I cannot figure out why seeminling small and simple things just doesn't work like I think the will.

           
         
         

Lista de respuestas

1
 
vote
  //html <div ng-controller='MyCtrl'>   <form>     <input ng-init="projectData.title = title" type="text" ng-model="title">         <button ng-click="formSubmit()">         submit         </button>   </form>   {{title}} </div>  //js   var app = angular.module('myApp', []);  app.controller('MyCtrl', ['$scope', MyController]);   function MyController($scope) {    $scope.projectData = {};    $scope.title = 'This is just title';     $scope.formSubmit = function() {      console.log("$scope.projectData  ===>", $scope.projectData)    }  } 4  

Yo diría que este es el problema. //html <div ng-controller='MyCtrl'> <form> <input ng-init="projectData.title = title" type="text" ng-model="title"> <button ng-click="formSubmit()"> submit </button> </form> {{title}} </div> //js var app = angular.module('myApp', []); app.controller('MyCtrl', ['$scope', MyController]); function MyController($scope) { $scope.projectData = {}; $scope.title = 'This is just title'; $scope.formSubmit = function() { console.log("$scope.projectData ===>", $scope.projectData) } } 5 S No se puede reasignar, intente cambiarlo a //html <div ng-controller='MyCtrl'> <form> <input ng-init="projectData.title = title" type="text" ng-model="title"> <button ng-click="formSubmit()"> submit </button> </form> {{title}} </div> //js var app = angular.module('myApp', []); app.controller('MyCtrl', ['$scope', MyController]); function MyController($scope) { $scope.projectData = {}; $scope.title = 'This is just title'; $scope.formSubmit = function() { console.log("$scope.projectData ===>", $scope.projectData) } } 6 , de lo contrario no sucede nada, ya que su Webelement es NULL

Editar: Parece que el problema estaba conectado a la lógica que se está envolviendo en un objeto Companio

 
@FindBy(id = "lblsokerOmboligprosjekt")         private val lblsokerOmboligprosjekt: WebElement? = null 

I'd say this is the problem. vals can't be reassigned, try changing it to private var, otherwise nothing happens, since your WebElement is null

EDIT: It seems that the issue was connected to the logic being wrapped in a companion object

 
 
   
   

Relacionados problema

4  Pruebas de pepino de rieles con un servidor LDAP  ( Rails cucumber testing with a ldap server ) 
Estoy tratando de escribir algunas pruebas de pepino para mi aplicación que utiliza Authlogic para la autenticación de usuarios, pero en realidad almacena en ...

2  Los rieles de borde no enumeran los generadores de complemento / gema  ( Edge rails doesnt list plugin gem generators ) 
Recientemente creó un esqueleto de proyecto con rieles de borde e instalado rspec , rspec-rails y NextPos = InStr(Pos, WholeLine, Sep)0 como complementos...

11  kernel_require.rb: 55: En 'Requerir': no ​​se puede cargar dicho error de archivo  ( Kernel require rb55in require cannot load such file error ) 
Estoy usando Ruby versión 1.9.3 en este momento (aunque obtengo el mismo problema con Ruby 2.0.0). En Windows 7 64 bits. Estoy siguiendo 'el Libro del pepino'...

0  AmbigüeStepDefinitionSeguecepcionalmente usando pepino en Android  ( Ambiguousstepdefinitionsexception while using cucumber on android ) 
Estoy obteniendo la excepción ambiguaTeptedExItsExSegue con el registro: cucumber.runtime.AmbiguousStepDefinitionsException: ✽.Given I am logged out(featur...

0  Uso del pepino para probar el controlador sin una vista en los rieles  ( Using cucumber to test controller without a view in rails ) 
Soy un Newbie Ruby / Rails y la solicitud que estoy desarrollando comienza con una publicación HTTP desde otro sitio web que pasa en algunos datos y luego mue...

4  No se puede obtener el pepino trabajando con Ruby 2.x en Windows  ( Unable to get cucumber working with ruby 2 x under windows ) 
Cuando ejecuto el pepino, obtengo los siguientes mensajes: Error Number: 1142 SELECT command denied to user '******** ip.secureserver.net' for table 'Comm...

44  ¿Cómo marca un escenario de pepino en pendiente?  ( How do you mark a cucumber scenario as pending ) 
¿Cómo marco un escenario de pepino en pendiente, por lo que no se contabiliza como pasó? $(document).ready(function() { $('ul#navfilter a').click(fu...

1  concentración de pepino  ( Cucumber devise ) 
Estoy tratando de escribir una función para probar una autenticación de un modelo de usuario (dispositivo + CANCAN). Al usuario se puede atribuir diferentes r...

35  ¿Cómo publicas a una URL en Capybara?  ( How do you post to a url in capybara ) 
Acaba de cambiar del pepino + Webrat al pepino + Capybara y me pregunto cómo puede publicar contenido a una URL en Capybara. en pepino + webrat pude tener u...

0  Ruby en los rieles: pepino: ¿Cómo reemplazo el texto en un campo?  ( Ruby on rails cucumber how do i replace text in a field ) 
Quiero poner texto en un campo que ha sido autofillado. lo tradicional When I fill in "ntoheu" with "nthoeu" Parece que no funciona iam también usando ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos