2017-08-31 6 views
0

J'essaie d'écrire un test qui vérifie si une case est cochée ou non, si elle n'est pas cochée, quelle méthode vais-je utiliser pour la faire vérifier.Cocher si case n'est pas cochée

Je l'ai déjà écrit un code qui vérifie une case à cocher,

driver.find_element(:id, 'id_of_the_element').click(); 

mais je veux toujours vérifier si elle a été cochée ou non aussi pour d'autres cas de test

TYIA!

+0

idk sur ce que vous utilisez, mais dans Android, la fonction est appelée isChecked(), peut-être vérifier vos docs –

+0

@SaikCaskey, j'utilise ruby ​​et capybara pour écrire mes cas de test. – Aurb

Répondre

0

Je pense que vous attendez l'extrait de code dans Ruby depuis que vous avez écrit l'extrait de ruby. Ce code fonctionne si vous souhaitez cocher la case non cochée. Vous pouvez modifier si vous avez besoin de plus de changements à l'intérieur.

element=driver.find_element(:id, 'id_of_the_element'); 
    if(element.attribute("checked")=="false") 
    { 
     element.click(); 
    } 
+0

cette méthode fonctionne pour moi! remercier! – Aurb

0
if((cb.isChecked()) 
{ 
    //Checkbox is true. 
} 
else 
{ 
    //Checkbox is false. 
} 
+1

Bien que cet extrait de code puisse résoudre le problème, il n'explique ni pourquoi ni comment il répond à la question. Veuillez inclure une explication pour votre code, car cela aide vraiment à améliorer la qualité de votre message. Rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code –

0

Pour vérifier si la case est cochée ou non vous devez appeler la méthode isChecked() comme ceci:

if(checkbox.isChecked()) { 
    // The checkbox is checked 
} else { 
    // The checkbox isn't checked 
} 

Alors que pour définir l'état de la case à cocher, vous devez appeler la méthode setChecked() passant comme paramètre true pour le vérifier et false pour le décocher.

0

Il semble que vous utilisiez Capybara avec appium, mais pour une raison que vous appelez pilote des méthodes spécifiques plutôt que d'utiliser l'API Capybara normale . Au lieu de la driver.find_element(:id, 'id_of_the_element').click(); vous devriez juste appellerez l'une des

page.find(:id, 'id_of_the_element').click() # use the id selector 
page.find('#id_of_the_element').click() # use default CSS with an id selector 

pour trouver et cliquez sur un élément avec id « id_of_the_element ». Lorsque vous traitez avec des types d'éléments spécifiques, il existe d'autres méthodes disponibles, donc pour les cases à cocher nous avons check et uncheck - http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#check-instance_method - va cocher ou décocher une case, tout en vérifiant si elle est déjà cochée/décochée. Alors

page.check('id_of_the_element) 

fera en sorte un type d'entrée < = « checkbox » id = 'id_of_the_element> est laissé dans l'état vérifié, quel que soit l'état était avant.

Si vous avez besoin de vérifier si oui ou non une case est cochée - http://www.rubydoc.info/gems/capybara/Capybara/Node/Element#checked%3F-instance_method - vous pouvez utiliser l'une

page.find('#id_of_the_element').checked? # return checked state of any element 
page.find(:checkbox, 'id_of_the_element').checked? # will only find actual checkbox elements 
page.find_field('id_of_the_element', type: 'checkbox').checked? 
... 

ou si vous voulez affirmer qu'une case est cochée une des conditions suivantes se faire - http://www.rubydoc.info/gems/capybara/Capybara/RSpecMatchers

expect(page).to have_selector(:checkbox, 'id_of_the_element', checked: true) 
expect(page).to have_field('id_of_the_element', type: 'checkbox', checked: true) 
expect(page).to have_checked_field('id_of_the_element') 
+0

Lorsque j'ai essayé d'utiliser la méthode page.find, il répertorie tous les éléments ID disponibles sur cette page mais incapable de localiser l'élément. mais page.find_element fonctionne d'une manière ou d'une autre. Je pense que je dois lire toute la documentation que vous m'avez donnée. Merci! – Aurb

+0

@Aurb Ensuite, il semble que vous n'utilisiez pas Capybara avec Appium, et vous devriez supprimer le tag Capybara de la question. –

0

Je pense est beaucoup plus simple ... (avec python sera comme ça)

def isChecked(self, webElement): 
    if webElement.get_attribute("checked") == 'true': 
     return True 
    else: 
     return False