如何使用selenium java webdriver选择复选框?

Max*_*mus 40 selenium xpath webdriver selenium-webdriver

如何使用id/xpath检查复选框.有没有类似于selecttext by selecttext的方法.

通过给出所有其他相关问题的示例,我找不到一个正确的解决方案,以简洁的方式工作,通过几行或方法我可以检查chekbox或单选按钮.

任何帮助,将不胜感激.

HTML示例部分如下:

<tbody> 
<tr> 
    <td> 
        <span class="120927"> 
        <input id="ctl00_CM_ctl01_chkOptions_0" type="checkbox" name="ctl00$CM$ctl01$chkOptions$0"/> 
        <label for="ctl00_CM_ctl01_chkOptions_0">housingmoves</label> 
        </span> 
    </td> 
</tr> 
<tr>
    <td>
        <span class="120928"> 
        <input id="ctl00_CM_ctl01_chkOptions_1" type="checkbox" name="ctl00$CM$ctl01$chkOptions$1"/> 
        <label for="ctl00_CM_ctl01_chkOptions_1">Seaside & Country Homes</label> 
        </span> 
    </td> 
</tr> 
</tbody> 
Run Code Online (Sandbox Code Playgroud)

Cod*_*tic 64

选中复选框与单击按钮类似.

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

会做.

但是,您还可以查看是否已选中该复选框.以下代码段检查是否选中了复选框.如果未选中,则选择.

if ( !driver.findElement(By.id("idOfTheElement")).isSelected() )
{
     driver.findElement(By.id("idOfTheElement")).click();
}
Run Code Online (Sandbox Code Playgroud)


Sco*_*owe 24

我意识到这个问题已经持续了几个月,但我刚刚找到它并且遇到了同样的问题并找到了解决方案.似乎IE驱动程序不会像其他驱动程序那样与所有内容交互,而复选框就是其中之一.

复选框的技巧是发送Space键而不是使用click(只需要在IE上),就像在C#中一样:

if (driver.Capabilities.BrowserName.Equals(“internet explorer"))
    driver.findElement(By.id("idOfTheElement").SendKeys(Keys.Space);
else
    driver.findElement(By.id("idOfTheElement").Click();
Run Code Online (Sandbox Code Playgroud)

  • SendKeys也是C#驱动程序的解决方案.谢谢. (3认同)
  • 我发现我还必须在ChromeDriver中使用发送空格键的方法。我已经使用Chrome Drive v2.14和IEDriver 2.44测试了发送空格键方法。 (2认同)

小智 5

如果要一次单击所有复选框,则可以使用以下方法:

private void ClickAllCheckboxes()
{
    foreach (IWebElement e in driver.FindElements(By.xpath("//input[@type='checkbox']")))
    {
        if(!e.Selected)
            e.Click();
    }
}
Run Code Online (Sandbox Code Playgroud)


Arn*_*nab 5

C#解决方案

try
{
    IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal));
    if (!TargetElement.Selected)
    {                    
        TargetElement.SendKeys(Keys.Space);
    }
}
catch (Exception e)
{
}
Run Code Online (Sandbox Code Playgroud)


som*_*guy 1

这应该有帮助 -

IWebElement elementToClick = driver.findElement(By.xpath(""//input[contains(@id, 'lstCategory_0')]"));
elementToClick.Click();
Run Code Online (Sandbox Code Playgroud)

您还可以传递一个 id。

如果您想要类似可见文本的内容,您可以按名称“查找元素” (如果它们有名称)。