2012-08-09 3 views
2

J'utilise Selenium 2 (Webdriver) pour automatiser les tests sur une page Web. Cependant, je me demande s'il y a moyen de cocher la case à cocher de la liste des cases à cocher en utilisant le framework webdriver?Cliquez sur Case à cocher dans la liste des cases à cocher via Selenium/Webdriver

J'ai essayé ce code mais sans succès.

IWebElement box = ffDriver.FindElement(By.XPath("//*[@id='ctl00_ContentPlaceHolder1_Adde_div']")); 
List<IWebElement> chkbox = box.FindElements(By.TagName("input")); 
ffDriver.FindElement(By.Id("ctl00_ContentPlaceHolder1_Add_lstCategory_0"));   
//chkbox.g(2).click(); 

Répondre

5

Si vous connaissez déjà l'id de la case à cocher, vous pouvez utiliser cette méthode pour cliquer sur le sélectionner:

string checkboxXPath = "//input[contains(@id, 'lstCategory_0')]" 
IWebElement elementToClick = driver.FindElement(By.XPath(checkboxXPath)); 
elementToClick.Click(); 

En supposant que vous avez plusieurs cases à cocher sur la page avec ids similaires, vous devrez peut-être changer 'lstCategory_0' en quelque chose de plus spécifique.

Ceci est écrit en C#, mais il ne devrait pas être difficile de l'adapter à d'autres langues. En outre, si vous modifiez votre message avec plus d'informations, je peux affiner cet exemple.

Faites-moi savoir si cela fonctionne!


J'ai visité le site et interagi avec les cases à cocher dans le widget déroulant avec succès en utilisant ce code:

/** Set XPath Variables **/ 
string dropdownWidgetXPath = "//span[contains(@id, 'selInd')]"; 
string checkboxXPath = "//input[contains(@id, 'selInd')]"; 

/** Navigate to the page **/ 
driver.Navigate().GoToUrl("http://www.jobserve.com/us/en/Job-Search/"); 

/** Click the dropdown widget **/ 
IWebElement dropdownWidgetElement = driver.FindElement(By.XPath(dropdownWidgetXPath)); 
dropdownWidgetElement.Click(); 

/** Identify all checkboxes present **/ 
var allCheckboxes = driver.FindElements(By.XPath(checkboxXPath)); 

/** Click each checkbox and wait so that results are visible **/ 
foreach(IWebElement checkbox in allCheckboxes) 
{ 
    checkbox.Click(); 
    System.Threading.Thread.Sleep(500); 
} 
+0

si vous allez sur ce site http://www.jobserve.com/us/en/ Job-Search/et cliquez sur la liste déroulante (Industrie) et j'essaie de sélectionner quelques cases à cocher à partir de là .. –

+0

J'ai essayé votre code, mais n'a pas cliqué sur l'identifiant de la case que je voulais être –

+0

J'ai mis à jour mon poster. S'il vous plaît laissez-moi savoir si cela fonctionne! –

1

En Sélénium WebDriver vous pouvez le faire comme ceci:

Toutes les Les cases à cocher doivent avoir un identifiant unique, alors vous pouvez simplement le trouver par Id Si elles n'ont pas d'identifiant unique (Ceci est ce que j'ai rencontré lors du test d'une application web) alors il doit avoir un attribut title et name autre attribut).

Ensuite, vous pouvez essayer:

driver = new FirefoxDriver(); 
driver.findElement(By.xpath("//input[@name='mycheckboxgroup' and @title='movies']")).click();  
driver.findElement(By.xpath("//input[@name='mycheckboxgroup' and @title='songs']")).click(); 
0

par id de la case à cocher, vous pouvez utiliser le code suivant:

IWebElement elementToClick = driver.FindElement(By.ID(ctl00_ContentPlaceHolder1_Add_lstCategory_0)); 
elementToClick.Click(); 

Si vous ne savez pas id puis utilisez le code ci-dessous par xpath:

String checkbox = "//input[@type='checkbox']" 
IWebElement elementToClick = driver.FindElement(By.XPath(checkbox)); 
elementToClick.Click(); 
0

Le code selenium est simple:

new WebDriverWait(driver, TimeSpan.FromSeconds(timeToHoldOn)).Until(ExpectedConditions.ElementExists((By.ClassName("ckb")))); 
IWebElement dropdownWidgetElement = driver.FindElement(By.ClassName("ckb")); 
dropdownWidgetElement.Click(); 
Thread.Sleep(1000); 
var allCheckboxes = driver.FindElements(By.ClassName("ckb")); 
foreach (IWebElement checkbox in allCheckboxes) { 
    checkbox.Click(); 
    System.Threading.Thread.Sleep(250); 
} 
0

Voilà comment je cocher et décocher toutes mes boîtes, il doit avoir une carte d'identité ou de la classe.

exemple Id:

driver.FindElement(By.Id("someid")).click(); 

ClassName examaple:

driver.FindElement(By.ClassName("someid")).click(); 

Son court, son doux et plus important encore, il fonctionne.

0

Essayez d'utiliser ce morceau de code écrit en java

String checkboxes = "//*[@type='checkbox']"; 
List<WebElement> elementToClick = driver.findElements(By.xpath(checkboxes)); 
for (WebElement AllCheck : elementToClick) { 
    AllCheck.click(); 
} 
0

Java, en cliquant sur plusieurs cases à la fois avec la boucle.

**Sample Xpath :** 

CheckBox1 Xpath : //input[@class='mycheck' and @id='1'] 
CheckBox2 Xpath : //input[@class='mycheck' and @id='2'] 

Obtenez tous les éléments à l'aide de case à cocher findelements:

Liste WebElement ele = driver.findElements (By.xpath ("// input [@ class = 'mycheck']")) ;

Faites le Xpath en tant que chaîne en laissant l'ID et affecter l'ID en tant que i. Je reçois la valeur pour chaque boucle et le xpath correspond à la case à cocher et le clique dessus.

0

Vous pouvez sélectionner chacun des boutons radio/cases à cocher en sélectionnant l'élément qui les contient et en parcourant chacun d'entre eux comme un tableau.

Par exemple, ici un élément ul contient des boutons radio. Je sélectionne l'élément ul d'abord, puis je peux sélectionner chaque radio en utilisant l'index correct (à l'intérieur du [])

//Select the ul containing the radio buttons I want to click/select 

    var ul = driver.FindElement(By.Id("ul_containing_radio_buttons")); 

    //use forloop to click each button in turn   
    for (var i = 2; i <= 0; i--) 
     { 
      var button= ul.FindElements(By.TagName("input"))[i]; 
      //i is the index of the radio button in out ul element 
      button.Click(); 
     } 
Questions connexes