如何使用selenium单击复选框

时间:2014-05-10 05:56:49

标签: java html selenium xpath

<div id="yui_3_16_0_1_1399697074576_1339" class="cbox " role="gridcell">
<input id="yui_3_16_0_1_1399697074576_1338" type="checkbox" tabindex="-1" 89513626107905="" aria-label="Message " title="Select this email">
<span id="yui_3_16_0_1_1399697074576_1340" class="icon"></span>
</div>`

以上HTML来自firebug。

我想点击复选框,其ID从上方id="yui_3_16_0_1_1399697074576_1338"。我尝试使用by.idby.path,但它们都不起作用。 以下是我的尝试:

By.id("yui_3_16_0_1_1399697074576_1338")
By.xpath("//input[@id='yui_3_16_0_1_1399697074576_1339'

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

如果id是静态的:

 string checkboxXPath = "//input[contains(@id, 'yui_3_16_0_1_1399697074576_1338')]"

表示动态广告代码值:

           string checkboxXPath = "//input[contains(@type,'checkbox') and                       
          contains(@title,'Select this email')]"

IWebElement elementToClick = driver.FindElement(By.XPath(checkboxXPath));
elementToClick.Click();

答案 1 :(得分:1)

从不希望匹配这样的ID。我推荐的是匹配一些更“独特”的东西。

尝试:

By.cssSelector("input[type='checkbox'][title='Select this email']")

上面的这个选择器将完全匹配您的<input/>。并且,它没有与Yahoo UI结合使用,因此如果您或您的开发人员更换软件,它将会解释这一点。

答案 2 :(得分:0)

您必须使用id获取元素并单击。它类似于按钮点击

driver.findElement(By.id("yui_3_16_0_1_1399697074576_1338")).click();