2

texte passant parComment sélectionner un élément dans ng-autocomplete dans rapporteur?

sendKeys("dublin,south Africa"); 

Il est impossible de sélectionner le premier élément de saisie semi-automatique.

+1

sendkeys n'entrer dans le texte dans le champ texte. Vous devez faire en sorte que votre script clique sur la valeur requise dans la liste déroulante de saisie semi-automatique. Pouvez-vous fournir plus d'informations sur le problème auquel vous êtes actuellement confronté? –

+0

J'ai un champ de localisation, lorsque l'utilisateur saisira un nom de ville qu'il reconnaîtra et donnera des noms de villes suggérées @ SudharsanSelvaraj – Shiva

+0

Donc, ce que vous devez faire est après avoir entré le nom de la ville, attendez que la suggestion de la liste déroulante soit affichée. cliquez sur le nom de la ville souhaitée dans la liste des suggestions. –

Répondre

1

problème résolu.

this.checkin = function(text,index){ 
     element(by.css('[ng-click="showMapTextBox2()"]')).click(); 
     // element(by.model("location")).sendKeys(text); 
     browser.actions() 
     .mouseMove(element(by.model("location")) 
     .sendKeys(text)) 
     .perform().then(function(){ 
     browser.sleep(500); 
     // press the down arrow for the autocomplete item we want to choose 
     for(i = 0; i < index ; i++){ 

      browser.actions().sendKeys(protractor.Key.ARROW_DOWN).perform(); 
     } 
     browser.sleep(500); 
     browser.actions().sendKeys(protractor.Key.ENTER).perform(); 
     }); 
     browser.sleep(3000); 
    }; 

Code spec_test:

post_text.checkin("new Delhi, India",1); 
0

Saisissez manuellement ce que le test doit exécuter et inspectez l'élément de saisie semi-automatique. Vous utiliserez protractor.ExpectedConditions pour attendre cet élément, puis cliquez dessus après avoir envoyé les clés.

+0

toujours confronté au même problème @ doct03 – Shiva

0

Vous devez faire 2 choses:

  1. Entrez le texte. Parfois, il est nécessaire d'appuyer sur Tab pour forcer la saisie semi-automatique pour afficher les options
  2. Sélectionnez déroulant approprié l'option

Exemple de code en C#:

fieldElement.ClearAndSendKeys(partialValue); 
fieldElement.SendKeys(Keys.Tab); 
GetFieldDropdown(completeValue).Click(); 

détails de la méthode GetFielDropdown() en fonction de votre DOM. Voici un exemple simplifié d'un projet, je travaille sur:

private IWebElement GetFieldDropdown(string dropdownValue) 
{ 
    return FindElement(By.XPath($"//span[contains(.,'{dropdownValue}')]")); 
} 

Notez que s'il y a un retard dans autocomplete affiché ci-dessus code ne fonctionnera pas inchangé (Le findElement ne reviendra pas un élément). Vous devrez attendre que l'option de liste déroulante soit affichée avant de cliquer dessus.

PS - partialValue et completeValue peuvent être les mêmes

+0

Merci @Ory Zaidenvorm. un code écrit comme celui-ci. this.checkin = fonction (valeur) { \t \t var EC = protractor.ExpectedConditions; \t \t élément (par.css ('[ng-click = "showMapTextBox2()"]')) .click(); \t \t var enterLocation = element (by.model ("location")); Browser.wait (EC.visibilityOf (enterLocation), 10000, 'enterLocation introuvable'); \t \t browser.sleep (5000); \t \t var ExpList = enterLocation.sendKeys (valeur); \t \t attend (ExpList.isDisplayed()). ToBe (true); \t \t attend (ExpList.getText()).toEqual («Hyderabad, Telangana, Inde»); \t \t browser.sleep (4000); \t}; – Shiva

+0

@ Shiva Je pense que vous avez un problème dans la ligne var ExpList = enterLocation.sendKeys (value); Vous devriez SendKeys puis définir (rechercher) ExpList (comme dans la méthode GetFileDropdown dans l'exemple fourni). –