0 votes

Selenium + JavaScript + Infragistics WebDateChooser

Je travaille sur des tests Selenium pour une de nos pages qui possède un WebDateChooser Infragistics. Il m'a fallu un certain temps pour arriver à définir le champ de date à partir du test Selenium, mais j'ai finalement réussi à faire fonctionner quelque chose :

waitForEval | javascript{this.browserbot.getUserWindow().igdrp_getComboById('ctl00_MainBody_ctl00_fdosDatePicker').setValue(new Date('2005-05-31'))} | dump

Le code fonctionne mais une erreur se produit dans l'IDE Selenium :

[error] Unexpected Exception : message -> eval(match[1]) is undefined, fileName -> chrome://selenium-ide/content/selenium/scripts/selenium-api.js, lineNumber -> 2464, stack -> ("javascript{this.browserbot.getUserWindow(). igdrp_getComboById('ctl00_MainBody_ctl00_fdosDatePicker').setValue(new Date('2005-05-31'))}")@chrome://selenium-ide/content/selenium/scripts/selenium-api. js:2464 ()@chrome://selenium-ide/content/selenium/scripts/selenium-executionloop. js:109 ()@chrome://selenium-ide/content/selenium/scripts/selenium-executionloop.js:78 continueCurrentTest()@chrome://selenium-ide/content/selenium-runner.js:335 (true)@chrome://selenium-ide/content/debugger. js:165 ("cmd_selenium_step")@chrome://selenium-ide/content/editor.js:233 doCommand("cmd_selenium_step")@:0 goDoCommand("cmd_selenium_step")@chrome://global/content/globalOverlay. js:96 oncommand([objet XULCommandEvent])@chrome://selenium-ide/content/selenium-ide.xul:1 , name -> TypeError

J'ai essayé plusieurs commandes différentes (waitForEval, storeEval, etc.) mais elles produisent toutes la même erreur.

Avez-vous des suggestions pour d'autres choses que je devrais essayer ?

Merci, Matt

1voto

Dave Hunt Points 6327

Bien que votre solution fonctionne, elle n'interagit pas avec le WebDateChooser comme le ferait un utilisateur. C'est peut-être ce que vous souhaitez, mais après avoir jeté un coup d'œil à la démo d'exemple à l'adresse suivante http://samples.infragistics.com/2007.3/webfeaturebrowser/WebDateChooser/Grid/webform1.aspx J'ai pu mettre en place un simple script pour interagir avec le WebDateChooser :

clickAt        | id=UltraWebGrid1_rc_0_5
waitForVisible | id=WebDateChooser1_img
clickAt        | id=WebDateChooser1_img
waitForVisible | id=WebDateChooser1_DrpPnl_Calendar1_504
select         | id=WebDateChooser1_DrpPnl_Calendar1_504 | label=July
select         | id=WebDateChooser1_DrpPnl_Calendar1_506 | label=1978
click          | id=WebDateChooser1_DrpPnl_Calendar1_d13

Ces localisateurs utilisent les ID, qui semblent être dynamiques et peu fiables. Si c'est le cas, vous devriez peut-être vous tourner vers des localisateurs XPath ou CSS plus fiables.

0voto

mattsmith321 Points 1729

Je suis enfin tombé dessus. Bien que j'utilise maintenant des valeurs différentes pour Command et Value, c'est en supprimant la syntaxe 'javascript{...}' de la cible que j'ai pu éviter l'erreur.

getEval | this.browserbot.getUserWindow().igdrp_getComboById('ctl00_MainBody_ctl00_tdosDatePicker').setValue(new Date('2009-05-31')) | 

Et voici une autre approche : Celle-ci utilise fireEvent pour que l'événement onblur se déclenche après la saisie du texte dans le champ. Je l'ai trouvé via Comment j'ai appris à aimer le fireEvent de Selenium

type | ctl00_MainBody_ctl00_fdosDatePicker_input | 01/01/2010
fireEvent | ctl00_MainBody_ctl00_fdosDatePicker_input | blur

Il est agréable d'avoir plusieurs options pour faire tout cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X