2012-08-09 99 views
2

我使用Selenium 2(Webdriver)来自动化网页上的测试。不过,我不知道是否有办法从使用webdriver框架的复选框列表中检查复选框?点击通过Selenium/Webdriver复选框列表中的复选框

我试过这段代码但没有效果。

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(); 

回答

5

如果你已经知道复选框的ID,你可以用这个方法来点击选择它:

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

假设你有类似的IDS在页面上几个复选框,则可能需要将'lstCategory_0'更改为更具体的内容。

这是用C#编写的,但它不应该很难适应其他语言。此外,如果您使用更多信息编辑帖子,我可以更好地调整此示例。

让我知道这是否行得通!


我访问过的网站,并成功地利用这个代码在下拉插件的复选框交互:

/** 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

如果您访问此网站http://www.jobserve.com/us/en/工作搜索/然后点击下拉列表(Industry),我试图从那里选择几个复选框.. – 2012-08-09 18:28:21

+0

我试过了你的代码,但没有点击我想要的复选框ID – 2012-08-09 19:36:44

+0

我已经更新了我的帖子。请让我知道它是否有效! – 2012-08-09 22:25:01

1

在硒的webdriver你可以做这样的:

所有复选框必须有一些唯一的标识符,然后你可以简单地通过Id找到它如果他们没有一个唯一的ID(这是我在测试Web应用程序时遇到的),那么它必须有一些标题和名称属性(或一些其他属性)。

那么你可以试试这个:

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

通过,你可以使用下面的代码复选框的ID:

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

如果你不知道ID,然后使用下面的代码xpath:

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

selenium代码很简单:

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

我这是怎么检查,并取消我所有的箱子,它必须有一个id或class。

编号例如:

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

类名examaple:

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

其短,它的甜,更重要的是它的工作原理。

0

尝试使用这一段代码用Java编写的

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

Java中,使用循环一次点击多个复选框。

**Sample Xpath :** 

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

获取所有元素复选框使用findelements:

列表WebElement ELE = driver.findElements(By.xpath( “//输入[@类= 'mycheck']”)) ;

通过将ID保留为ID并将ID指定为i来将Xpath设置为字符串。

for(int i=1; i<=ele.size(); i++) { driver.findElement(By.xpath("//input[@class='mycheck' and @id='" + + i + "']")).click(); } 

我得到每个循环的值,xpath匹配复选框并点击它。

0

您可以选择每个单选按钮/复选框,方法是选择包含它们的元素,并像数组一样遍历每个单选按钮/复选框。

例如,这里的ul元素包含一些单选按钮。我首先选择ul元素,然后我可以使用正确的索引选择每个收音机(在[]内)

//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(); 
     }