2017-10-11 1 views
1

je l'écran suivant: enter image description here J'utilise le script Ruby suivant cliquer sur le bouton « Ajouter »:ne peut pas Cliquez sur la classe même élément en utilisant Watir

vendorTab = driver.a id: "tab-master-tab-vendor" 
    vendorTab.wait_until_present 
    if vendorTab.exists? 
    vendorTab.click 
    end 

    addNewButton = driver.button class: ['btn btn-primary'] 
    addNewButton.wait_until_present 
    if addNewButton.exists? 
     addNewButton.click 
    end 

Mais, quand je passe à un autre onglet et essayez de cliquer sur le même bouton "Ajouter un nouveau", le script Ruby ne fonctionne pas. enter image description here Y at-il un problème avec mon code Ruby?

buildingTypeTab = driver.a id: "tab-master-tab-building" 
buildingTypeTab.wait_until_present 
if buildingTypeTab.exists? 
    buildingTypeTab.click 
end 

    addNewButton = driver.button class: ['btn btn-primary'] 
    addNewButton.wait_until_present 
    if addNewButton.exists? 
     addNewButton.click 
    end 

J'apprécie votre aide. Merci beaucoup.

Répondre

3

Je suppose que tous ces onglets font partie de la même page Web? I.e., tout dans le même HTML?

Si c'est le cas, driver.button class: ['btn btn-primary'] va s'arrêter quand il trouve la première instance dans le HTML, mais ce n'est pas le bouton que vous recherchez à chaque fois (c'est le bouton dans le premier onglet, où votre script travaillé comme prévu).

Les meilleures options dans mon esprit sont

  • trouver un moyen d'identifier de manière unique le bouton dans chaque onglet (par exemple, utiliser id au lieu de class si possible), ou
  • tirer tous les boutons en une collection et cliquez sur le bouton en utilisant son index de collection après avoir déterminé quel index s'aligne avec chaque onglet. Par exemple,

button_collection = browser.buttons(:class, ['btn', 'btn-primary']) button_collection[2].click # Will click the 3rd button in the collection

+0

Merci pour vos suggestions. Je l'ai fait fonctionner maintenant ... – FMD

0

Après avoir lu les suggestions de pjd, je l'ai modifié un peu et a obtenu fonctionner comme ceci:

buildingTypeTab = driver.a id: "tab-master-tab-building" 
buildingTypeTab.wait_until_present 
if buildingTypeTab.exists? 
    buildingTypeTab.click 
end 

    addNewButton = driver.button(:class => ['btn btn-primary'], :index => 2) 
    addNewButton.wait_until_present 
    if addNewButton.exists? 
     addNewButton.click 
    end 

Comme l'a dit pjd, oui tous ces les onglets font partie du même HTML

Merci.

+0

Si quelqu'un répond à votre question, s'il vous plaît accepter leur réponse, ils obtiendraient 15 points, vous devez cliquer sur le symbole de la coche en haut à gauche de leur réponse. – RAJ