Selenium RC中有一个
selenium.check
命令,该命令将检查一个框是否为空,或保留为已选中状态。例如:selenium.check("//input[@name=’checkboxes[]’ and @value=’cb3’]");
如果您访问目标网站(http://compendiumdev.co.uk/selenium/basic_html_form.html),则会看到三个复选框,其中之一被选中。我已经写了一些伪代码,但是无法使其正常工作。这是伪代码:
isChecked = driver.findElement(By.xpath("//input[@type='checkbox']"));
if (isChecked = false) {
check the box;
} else {
do nothing;
}
我知道布尔值
isSelected()
应该具有功能,但我不知道该怎么做。我所有的研究都返回了部分解决方案,但是没有什么可以让我对解决方案产生信心的飞跃了。#1 楼
在Selenium Simplified课程中,选择器的秘密实际上是“值”而不是“类型”,因为“值”在页面上唯一地标识了WebElement,并带有“以防万一”类型>WebElement checkBox1;
WebElement checkBox3;
checkBox1 = driver.findElement(By.cssSelector("input[value='cb1']"));
checkBox3 = driver.findElement(By.cssSelector("input[value='cb3']"));
if(!checkBox1.isSelected()){
checkBox1.click();
}
//checkBox3 is selected by default
if(checkBox3.isSelected()){
checkBox3.click();
}
或使用
findElements
代码。 您可以改为:
List<WebElement> selectElements=
driver.findElements(By.cssSelector("input[name='checkboxes[]']"));
selectElements.get(0).click();
if( selectElements.get(2).isSelected()){
selectElements.get(2).click();
}
或对其进行迭代: />希望有帮助。
#2 楼
它应该像这样简单:IWebElement element = driver.findElement(By.xpath("//input[@type='checkbox']"));
if (!element.Selected)
{
element.Click();
}
评论
谢谢你的例子。两件事情。首先,IWebElement和WebElement之间有什么区别?其次,这似乎只选中了三个框中的第一个,而未选中第二个框。那是对的吗?我的感觉是应该拿起所有未选中的框并选中它们。任何进一步的指针将不胜感激。
–SheyMouse
2012年12月13日上午10:47
如果您使用的是.net网络驱动程序,则为IWebElement。啊,我没有意识到您要检查所有3个复选框。在这种情况下,您可以执行driver.findElements而不是driver.findElement,然后将上面的代码放在foreach中以遍历每个复选框。
–山姆·伍兹(Sam Woods)
2012年12月13日在21:26
#3 楼
在C#中非常简单示例:
IWebElement chkBox = driver.FindElement(By.Id("some id "));
if (chkBox.Selected) {
//perform actions
} else {
//perform actions
}
评论
不确定这与Sam的答案有何不同。
– Suchit Parikh
13年5月3日在18:17
#4 楼
这是工作代码的示例-通过男性和女性单选按钮选择性别。/* load that webelement list of radio buttons. then follow the below code & logic */
List<WebElement> rdBtn_Sex = driver.findElements(By.name("sex"));
// Create a boolean variable which will hold the value (True/False)
boolean bValue = false;
// This statement will return True, in case of first Radio button is selected
bValue = rdBtn_Sex.get(0).isSelected();
// This will check that if the bValue is True means if the first radio button is selected
if (bValue = true) {
// This will select Second radio button, if the first radio button is selected by default
rdBtn_Sex.get(1).click();
} else {
// If the first radio button is not selected by default, the first will be selected
rdBtn_Sex.get(0)).click();
}
#5 楼
Boolean checkedStatus = true;
checkedStatus = CheckBox1.Selected;
if (checkedStatus == false) {
CheckBox1.Click();
}
我发现只要我使用“ selected”,即使选中该复选框,它也总是返回false。知道如何处理的人吗?
评论
我对这个问题到底是什么感到困惑。您是否无法切换该复选框,还是无法验证该复选框是否已选中?另外,如果您还没有看过,该文档可能会对您有所帮助-jarvana.com/jarvana/view/org/seleniumhq/selenium/…@SheyMouse,如果您在报告错误时记下尝试的代码,预期结果和实际结果,它可能会帮助其他人提供帮助;-)
@SuchitParikh感谢您的链接。我正在学习阅读文档,但是知识的应用仍然有点生锈。
@dzieciou谢谢您的建议。我一直在尝试做您提到的事情,但是没有取得进展。我在调试代码方面变得更好,但这是我无法解决的问题。