我正在使用Selenium 2(Webdriver)来自动化网页上的测试。但是我想知道是否有办法使用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();
答案 0 :(得分:5)
如果您已经知道复选框的ID,则可以使用此方法单击选择它:
string checkboxXPath = "//input[contains(@id, 'lstCategory_0')]"
IWebElement elementToClick = driver.FindElement(By.XPath(checkboxXPath));
elementToClick.Click();
假设您在页面上有几个具有类似ID的复选框,您可能需要将'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);
}
答案 1 :(得分:1)
在Selenium webdriver中你可以这样做:
所有的复选框都必须有一些唯一的标识符然后您可以通过Id找到它如果它们没有唯一的ID(这是我在测试Web应用程序时遇到的)那么它必须有一些标题和name属性(或其他一些属性)。
然后你可以试试这个:
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();
答案 2 :(得分: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();
答案 3 :(得分: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);
}
答案 4 :(得分:0)
这是我检查和取消选中所有框的方式,它必须有ID或类。
Id示例:
driver.FindElement(By.Id("someid")).click();
ClassName examaple:
driver.FindElement(By.ClassName("someid")).click();
它的短小,它的甜美,更重要的是它起作用。
答案 5 :(得分:0)
尝试使用用java编写的这段代码
String checkboxes = "//*[@type='checkbox']";
List<WebElement> elementToClick = driver.findElements(By.xpath(checkboxes));
for (WebElement AllCheck : elementToClick) {
AllCheck.click();
}
答案 6 :(得分: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(&#34; //输入[@class =&#39; mycheck&#39;]&#34));
通过保留ID将Xpath作为字符串,并将ID指定为i。
for(int i=1; i<=ele.size(); i++) { driver.findElement(By.xpath("//input[@class='mycheck' and @id='" + + i + "']")).click(); }
我得到每个循环的值,xpath与复选框匹配,然后点击它。
答案 7 :(得分: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();
}