上面是要自动化的复选框的图片,在检查时将元素名称显示为label :: before。使用id或name只会打开一些其他链接。关于使用Selenium - Java选择复选框,请帮忙。
答案 0 :(得分:1)
您正在尝试单击错误的元素。您要点击的元素是上面的<input name="term1" id="term1" type="checkbox">
。
term1
您只需使用ID driver.findElement(By.id("term1")).click();
即可完成此操作。
{{1}}
答案 1 :(得分:0)
我使用复选框的经验是,您必须单击复选框旁边的标签来设置它们。单击输入将导致OpenQA.Selenium.ElementNotVisibleException异常。您可以通过Element.Selected(C#)或Element.isSelected(Java)获取复选框的状态,但您无法像点击它那样与其进行交互。
你可以通过XPath找到标签&#34; //标签[包含(text(),&#39;同意我们的&#39;)]#34;或者使用&#34; //标签的属性[包含(@ for,&#39; term1&#39;)]&#34;
&#34;使用条款&#34;通过使用动作类可以避免链接打开,使用xoffset = 1和yoffset = 1将点击精确定位在标签的左上角。这种精确定位是必要的,因为在HTML中,锚标记嵌套在标签内标签。我在你的网站上尝试了这个代码,它给出了正确的结果。
在C#中,使用PageObject / PageFactory解决方案将是:
public class TestPage
{
private readonly IWebDriver _driver;
public TestPage(IWebDriver driver)
{
_driver = driver;
PageFactory.InitElements(driver, this);
}
[FindsBy(How = How.XPath, Using = "//label[contains(text(),'Agree to our')]")]
private IWebElement _labelInputCheckbox;
public void ClickLabelInputCheckbox()
{
var action = new OpenQA.Selenium.Interactions.Actions(_driver);
action.MoveToElement(_labelInputCheckbox,1,1).Click();
action.Perform();
}
}