使用Selenium WebDriver选中和取消选中复选框

使用Selenium WebDriver选中和取消选中复选框,selenium,selenium-webdriver,pageobjects,Selenium,Selenium Webdriver,Pageobjects,使用Selenium WebDriver选中和取消选中复选框 我使用的是,所以我的代码是这样显示的 SelectCheckBox("Check"); OR SelectCheckBox("Uncheck"); [FindsBy(How = How.Id, Using = "payment_sameasdeliveryaddress")] public IWebElement checkbox_Address = null; pu

使用Selenium WebDriver选中和取消选中复选框

我使用的是,所以我的代码是这样显示的

SelectCheckBox("Check");  OR  SelectCheckBox("Uncheck");

[FindsBy(How = How.Id, Using = "payment_sameasdeliveryaddress")]
public IWebElement checkbox_Address = null;

public void SetCheckBox(string value)
{
    //Console.Write("checkbox state: " + checkbox_Address.Selected);
    if (value.ToLower().Equals("uncheck") && checkbox_Address.Selected)
    {
        checkbox_Address.Click();
    }
    else if (value.ToLower().Equals("check") && !checkbox_Address.Selected)
    {
        checkbox_Address.Click();
    }

我已经好几年没有写过任何.NET了,所以下面的内容甚至可能无法编译!但希望你能明白

// The individual elements should be declared private
private IWebElement payment_sameasdeliveryaddress;
// If you name it same as the source element
// ID, PageFactory will find it for you

// flag = true, means you want it checked
public void SelectCheckBox(Boolean check)
{
    if (!check && payment_sameasdeliveryaddress.Selected) {
        payment_sameasdeliveryaddress.Click();
    }
    else if (check && !payment_sameasdeliveryaddress.Selected) {
        payment_sameasdeliveryaddress.Click();
}
这也将有助于:

// flag = true, means you want it checked
public void SelectCheckBox(Boolean check)
{
    if (check ^ payment_sameasdeliveryaddress.Selected) {
        payment_sameasdeliveryaddress.Click();
    }
}

使用SeleniumWebDriver 3.9.1和6.14共享当前项目中刚刚实现的代码段

案例1:选中复选框

if(dataValofChkBx != null && dataValofChkBx.equalsIgnoreCase("Y"))
{
   if(chkBx1Sel.toString() == "false")  //i.e., checkbox is not already checked
   {
      driver.findElement(By.xpath(POP2GUIConstants.ggsnFwlfUpdChkBx)).click();
    }
}
if(dataValofChkBx != null && dataValofChkBx.equalsIgnoreCase("N"))
{
   if(chkBx1Sel.toString() == "true")  // I.e., checkbox is already checked
   {
     driver.findElement(By.xpath(POP2GUIConstants.ggsnFwlfUpdChkBx)).click();
    }
}

案例2:取消选中复选框

if(dataValofChkBx != null && dataValofChkBx.equalsIgnoreCase("Y"))
{
   if(chkBx1Sel.toString() == "false")  //i.e., checkbox is not already checked
   {
      driver.findElement(By.xpath(POP2GUIConstants.ggsnFwlfUpdChkBx)).click();
    }
}
if(dataValofChkBx != null && dataValofChkBx.equalsIgnoreCase("N"))
{
   if(chkBx1Sel.toString() == "true")  // I.e., checkbox is already checked
   {
     driver.findElement(By.xpath(POP2GUIConstants.ggsnFwlfUpdChkBx)).click();
    }
}

选中复选框的最简单方法是通过对元素使用isSelected()方法来选中或不选中复选框。例如:

if(getCheckBox().isSelected()){
    getCheckBox.click();
}

public WebElement getCheckBox(){
    return driver.findElement(termsCheck);
}

这是一个可怕的函数!如果将其称为
SelectCheckBox(“uncheck”)
,小写为u,会发生什么?将
值设置为布尔值如何?