【问题标题】:isSelected() method for checkbox always returns false复选框的 isSelected() 方法总是返回 false
【发布时间】:2014-10-13 07:32:23
【问题描述】:

有一个复选框显示为已选中,现在当我检查它时,它在 HTML 中显示为 image src.。当我点击复选框时,它会被取消选中或选中。

为了验证它的状态,我写了这段代码,即使选中了复选框,它也总是返回 false。

WebElement chBox = driver.findElement(By.xpath
     ("/html/body/div[3]/div[2]/form/fieldset/div[1]/table/tbody/tr[10]/td/img"));

        if (chBox.isSelected()) {
            System.out.println("User active check box is already checked");
        } else
            System.out.println("User active check box is not checked");
        }

为什么?

【问题讨论】:

  • 请张贴元素的html
  • 元素的html不需要java错
  • @mfsi_sitamj 下面是 html:
  • 没关系,我看到您正在收集元素并进行预检查。它应该总是返回 false 是你得到的,但它返回 true?
  • @bcar 究竟是什么原因?

标签: html checkbox selenium-webdriver


【解决方案1】:

我发现如果你的复选框有tagname='input'type='checkbox',那么只有isSelected()会返回一个布尔值。

否则,我们必须寻找另一个在检查时发生变化的属性并取消检查。

【讨论】:

    【解决方案2】:

    问题可能出在您正在编写的 xcode 上。检查您是否可以仅为复选框获得更独特的 xcode,例如

    "/html/body/div[3]/div[2]/form/fieldset/div[1]/table/tbody/tr[10]/td/img[@type='checkbox']"

    checkbox xtype 应该主要以 type=checkbox 结尾,以便 isSelected 起作用

    【讨论】:

      【解决方案3】:

      在我看来,isSelected() 仅在默认选择时才返回 true。当我们选择一个元素并尝试检查它是否被选中时,它可能不起作用。 如果我错了,请纠正我。 Ankit

      【讨论】:

        【解决方案4】:

        如果一切都失败了,试试isDisplayed()

        driver.findElement(By.xpath(xpath).isDisplayed()
        

        【讨论】:

          【解决方案5】:
                 WebElement chck = driver.findElement(By.id("chkRemeberMe"));
          
                  if(!chck.isSelected())
                  {                 
                          System.out.println(" CheckBox Not Selected");
                  }
                  else
                  {
                      System.out.println("CheckBox Already Selected");
                  }
          

          【讨论】:

          • 请添加一些解释来回答这将有助于更好地理解它。
          【解决方案6】:
          WebElement chBox = driver.findElement(By.id("chkIsActive"));
          
          if (chBox.isSelected())
          {
             System.out.println("User active check box is already checked");
          } 
          
          else
          {
             System.out.println("User active check box is not checked");
          }
          

          希望这会有所帮助!

          【讨论】:

          • 它在 if() 条件的位置显示空点异常,我通过 try catch 管理它,但我认为这不是一个好习惯。那么,你能告诉我我为此做了什么吗??
          • HTML 复选框中没有给出 id,只有图像 src 写在标签 --- 中
          • 我认为这是我指向的元素:<input id="chkIsActive" type="checkbox" name="IsActive" style="display: none;">。无论如何,您能否运行以下代码并将输出粘贴到此处:WebElement chBox = driver.findElement(By.xpath("/html/body/div[3]/div[2]/form/fieldset/div[1]/table/tbody/tr[10]/td/img")); System.out.println(chBox.getAttribute("src")); 请在选中复选框之前和之后运行两次并将输出粘贴到此处。
          • 当我在选中复选框之前和之后运行它时,它会出现“Null”。
          • 当我通过控制台中的一些逻辑检查它时,它会显示三个复选框,但只有两个复选框,一个用于 checked.gif,第二个用于 unchecked.gif .... 我不明白如何现在继续你能建议吗?
          【解决方案7】:

          在选中/取消选中复选框时检查类属性是否正在更改。如果是这样,则选择状态作为类的一部分存储

              String Class=chk.getAttribute("class");
          
              if(Class.contains("class name when it is checked"))
               {
                  System.out.println("Status: "+chk.getAttribute("checked"));
                  //This will return Null, since it is not a real check box(type=checkbox), 
                  //so there is no checked attribute in it
               }
              else
               {
          
                  System.out.println("Not Checked");
               }
          

          isSelected() 方法不会处理这种类型的复选框,这就是为什么它总是返回 false 或未选中(从您的角度来看) 参考:here

          【讨论】:

          • 以下是该复选框的 html,其中在检查复选框时不显示任何类:
          • 在切换复选框时是否将 value="checked" 更改为 value="unchecked"(或其他)?
          • 在 html 中将代码更改为“Checked.gif”或“Unchecked.gif”。
          • 所以,通过img src你可以检查它是否被选中,在此基础上你可以点击复选框
          【解决方案8】:

          您的 findElement() 调用丢失。单击以检查或选中复选框或单选

          WebElement we  = findElement(By.xpath("some path));
          we.click();
          we.isSelected() => true
          

          【讨论】:

          • 此答案与问题无关。
          猜你喜欢
          • 1970-01-01
          • 2021-08-24
          • 1970-01-01
          • 2019-03-13
          • 1970-01-01
          • 2012-02-16
          • 2020-06-16
          相关资源
          最近更新 更多