如何使用 C# 检查 Selenium 中开关切换的状态

How to check state of a switch toggle in Selenium using c#

我正在尝试使用 selenium 验证开关是否打开或 'off',但我似乎做错了。在加载网页时切换设置为开启位置,但在关闭时过滤结果为 table 等。它工作正常我只是检查获取我的硒测试以获取其当前状态。

  1. element.Selected;始终 returns false(关于切换位置)
  2. element.Enabled;总是 returns 真(关于切换位置)
  3. 字符串测试=myToggle.GetAttribute("class"); returns 文本 "slider round" 没有帮助
  4. 字符串测试1 = myToggle.GetAttribute("checked");为空
  5. 字符串测试2 = myToggle.GetAttribute("value");为空

代码如下:

<label class="switch">
<input type="checkbox" id="myToggle" checked />
<span class="slider round"></span>
</label>

检查切换位置并加载 table 数据的代码:

   if (Amt == currentAmt ) {
    if ($("#myToggle").prop("checked") == true) {
        loadMyProducts('NAN', $("#total").val());
    }

我现在的测试是这样的

    [FindsBy(How = How.XPath, Using = "//*[@id='divTestAcc']/div[1]/p[9]/label/span")]
  public IWebElement myToggle { get; set; }

    public Boolean CheckMyToogleIsOnorOFF()
    {
        string test = myToggle.GetAttribute("class");
        Console.Write("checking "+ test);

        // string test1 = myToggle.GetAttribute("checked");
        //string test2 = myToggle.GetProperty("checked");
        // .Selected always returns false
        // .Enables always returns true 

        Boolean result;
        result = myToggle.Enabled;
        bool result1 = myToggle.Selected;

        if (result == true)
        {
            Console.WriteLine("My toggle is enabled");
        }
        else
        {
            Console.WriteLine("My toggle is not enabled");
        }
        return result;
    }
// is it checked? 
var isChecked = driver.FindElement(By.XPath("//input[@type='checkbox']").Selected;

使用 .Selected 属性应该可以实现您的目标。我添加 driver.FindElement 语句的原因是为了确保您找到正确的元素——根据您的问题描述,我不确定您找到并测试的元素是否正确。

正如另一位用户指出的那样,如果 GetAttribute("class") returns slider round,那么您在这里查看的元素是错误的。确保首先找到 input 元素。

您的文件头 //*[@id='divTestAcc']/div[1]/p[9]/label/span 处的 XPath 将定位 span 元素,而不是 input -- input 是带有 checked 的元素,所以这就是我们需要测试的。