Appium isEnabled属性在应用程序中未按预期工作

Appium isEnabled属性在应用程序中未按预期工作,appium,isenabled,Appium,Isenabled,有人能用外行术语向我解释一下命令isEnabled()在Appium中是如何工作的吗 场景:特定移动页面上有3个复选框。 -复选框1、复选框2和复选框3 默认情况下,“Checbox3”处于禁用状态,仅在选择“Checkbox2”时启用 TC将验证默认情况下是否禁用“Checkbox3”,并打印以下输出 “Checkbox3当前已禁用” 启用“Checkbox3”后,我们需要打印以下输出 “Checkbox3当前已启用” 我将以TestNG的形式执行它,并使用以下代码行 boolean Firs

有人能用外行术语向我解释一下命令isEnabled()在Appium中是如何工作的吗 场景:特定移动页面上有3个复选框。 -复选框1、复选框2和复选框3 默认情况下,“Checbox3”处于禁用状态,仅在选择“Checkbox2”时启用

TC将验证默认情况下是否禁用“Checkbox3”,并打印以下输出 “Checkbox3当前已禁用”

启用“Checkbox3”后,我们需要打印以下输出 “Checkbox3当前已启用”

我将以TestNG的形式执行它,并使用以下代码行

boolean FirstValue = XMLPage.ListofCheckboxes.get(2).isEnabled();
System.out.println(FirstValue);
if(FirstValue=false)
{
    System.out.println("Checkbox3 is currently Disabled");
}
else
{
    System.out.println("Checkbox3 is currently Enabled");
}
Thread.sleep(4000);
XMLPage.ListofCheckboxes.get(1).click();
boolean SecondValue = XMLPage.ListofCheckboxes.get(2).isEnabled();
System.out.println(SecondValue);
if(SecondValue=true)
{
    System.out.println("Checkbox3 is currently Enabled");
}
else
{
    System.out.println("Checkbox3 is currently Disabled");
}
预期输出:

  • 假的
  • “Checkbox3当前已禁用”
  • 真的
  • “Checkbox3当前已启用”
  • 实际输出:

  • 假的
  • “Checkbox3当前已启用”
  • 真的
  • “Checkbox3当前已启用”
  • 第一次遇到if语句时,它不应该将输出打印为“Checkbox3当前已禁用”,我不确定它为什么打印“else”下提到的输出{即:-“Checkbox3当前已启用”}。
    如输出中所示,“boolean FirstValue=XMLPage.listofcheckbox.get(2).isEnabled();”命令返回的值为false,因此代码应该打印“if”而不是“else”下提到的输出。

    您在代码中使用的if语句是错误的

    代码中的if语句

    if(FirstValue=false){
    ....
    }
    
    这是一个赋值操作,因为您使用单个=符号。它将要做的是,它将FirstValue赋值为false,然后由于if块中的值现在为false,它将转到else块。这是一个有效的操作,因此它可以正常编译。但是if语句应该是一个比较步骤,如下所示,使用=符号

    if语句应该是比较步骤

    if(FirstValue==false){
    ....
    }
    

    这就是您输出错误的原因

    代码中使用的if语句是错误的

    代码中的if语句

    if(FirstValue=false){
    ....
    }
    
    这是一个赋值操作,因为您使用单个=符号。它将要做的是,它将FirstValue赋值为false,然后由于if块中的值现在为false,它将转到else块。这是一个有效的操作,因此它可以正常编译。但是if语句应该是一个比较步骤,如下所示,使用=符号

    if语句应该是比较步骤

    if(FirstValue==false){
    ....
    }
    

    这就是您输出错误的原因

    我对先前粘贴的代码做了一个更改,它显示了预期的输出。我将第一个if语句中的条件从“false”更改为“true” 但这让我更加困惑。为什么当用户第一次到达移动页面时复选框被禁用时,该值返回为“true”

    boolean FirstValue = XMLPage.ListofCheckboxes.get(2).isEnabled();
    System.out.println(FirstValue);
    if(FirstValue=true)
    {
        System.out.println("Checkbox3 is currently Disabled");
    }
    else
    {
        System.out.println("Checkbox3 is currently Enabled");
    }
    Thread.sleep(4000);
    XMLPage.ListofCheckboxes.get(1).click();
    boolean SecondValue = XMLPage.ListofCheckboxes.get(2).isEnabled();
    System.out.println(SecondValue);
    if(SecondValue=true)
    {
        System.out.println("Checkbox3 is currently Enabled");
    }
    else
    {
        System.out.println("Checkbox3 is currently Disabled");
    }
    
    预期产出: 1.假的 2.“Checkbox3当前已禁用” 3.真的 4.“Checkbox3当前已启用”

    实际产量: 1.假的 2.“Checkbox3当前已禁用” 3.真的
    4.“Checkbox3当前已启用”

    我对先前粘贴的代码进行了一次更改,它显示了预期的输出。我将第一个if语句中的条件从“false”更改为“true” 但这让我更加困惑。为什么当用户第一次到达移动页面时复选框被禁用时,该值返回为“true”

    boolean FirstValue = XMLPage.ListofCheckboxes.get(2).isEnabled();
    System.out.println(FirstValue);
    if(FirstValue=true)
    {
        System.out.println("Checkbox3 is currently Disabled");
    }
    else
    {
        System.out.println("Checkbox3 is currently Enabled");
    }
    Thread.sleep(4000);
    XMLPage.ListofCheckboxes.get(1).click();
    boolean SecondValue = XMLPage.ListofCheckboxes.get(2).isEnabled();
    System.out.println(SecondValue);
    if(SecondValue=true)
    {
        System.out.println("Checkbox3 is currently Enabled");
    }
    else
    {
        System.out.println("Checkbox3 is currently Disabled");
    }
    
    预期产出: 1.假的 2.“Checkbox3当前已禁用” 3.真的 4.“Checkbox3当前已启用”

    实际产量: 1.假的 2.“Checkbox3当前已禁用” 3.真的
    4.“Checkbox3当前已启用”

    谢谢Kishore,我尝试了你的建议,但没有成功。但是,当我将代码中的值更改为“true”时,它起作用的是布尔值FirstValue=XMLPage.listofcheckbox.get(2.isEnabled();System.out.println(FirstValue);如果(FirstValue=true){System.out.println(“Checkbox3当前已禁用”);}或者{System.out.println(“Checkbox3当前已启用”);},那么我想知道该命令是如何启用的work@Rohit我发现了你代码中的错误。请看我上面编辑的答案。如果这解决了你的问题,请接受我的回答。太棒了!!谢谢你,基肖尔,成功了。它现在显示预期的输出。@Rohit问题解决后,请接受答案。谢谢谢谢Kishore,我试过你的建议,但是没有用。但是,当我将代码中的值更改为“true”时,它起作用的是布尔值FirstValue=XMLPage.listofcheckbox.get(2.isEnabled();System.out.println(FirstValue);如果(FirstValue=true){System.out.println(“Checkbox3当前已禁用”);}或者{System.out.println(“Checkbox3当前已启用”);},那么我想知道该命令是如何启用的work@Rohit我发现了你代码中的错误。请看我上面编辑的答案。如果这解决了你的问题,请接受我的回答。太棒了!!谢谢你,基肖尔,成功了。它现在显示预期的输出。@Rohit问题解决后,请接受答案。谢谢代码中的if语句有一个小错误。请参考我上面更新的答案。它将解决您的问题。代码中的if语句有一个小错误。请参考我上面更新的答案。它会解决你的问题。