【问题标题】:What command do I use to fix this problem?我用什么命令来解决这个问题?
【发布时间】:2019-08-02 14:46:16
【问题描述】:

我的主要目标是创建一个程序,该程序可以自动化 android 应用,让您可以用手指完成所有操作。

我编写了这行代码,以便如果打开该开关ON,代码会将其切换OFF

driver.findElement(By.id("com.offerup:id/shipping_checkbox")).click();

但是当我再次运行我的代码时,该开关现在默认为 OFF

如果开关已经关闭,我需要一个命令让开关保持独立。

有人知道用什么命令吗?

【问题讨论】:

  • 所以,如果我明白这一点...您希望能够将标志设置为“关闭”,当它打开时,但在关闭后不再重新打开?
  • 是的,没错
  • 似乎有点可疑。如果用户改变主意怎么办?无论哪种方式,都可以在关闭时将其设置为禁用,这样,用户也可以直观地看到他无法更改该值。

标签: java android selenium automation appium


【解决方案1】:

您需要检查开关是否打开。您可以使用以下代码实现此目的:

if(driver.findElement(By.id("com.offerup:id/shipping_checkbox")).isSelected()){
   driver.findElement(By.id("com.offerup:id/shipping_checkbox")).click();
}

更新

正如 Muzammil 所说,isSelected() 没有按预期工作。或者,您可以使用 checked 属性:

MobileElement shippingCheckbox= driver.findElement(By.id("com.offerup:id/shipping_checkbox"));
if(shippingCheckbox.getAttribute("checked").equalsIgnoreCase("true")){
   shippingCheckbox.click();
}

【讨论】:

【解决方案2】:

有两种方法可以检查滑块是on还是off

这是 Slider 的节点详细信息。

选项 1:使用 文本

只有在滑块打开时我们才会点击这里。

MobileElement sliderElement=driver.findElement(By.id("com.offerup:id/shipping_checkbox"));
    String sliderStatus = sliderElement.getText();
            if (sliderStatus.equalsIgnoreCase("On")) {

              sliderElement.click();    

            }

选项 2:使用 属性

只有在滑块打开时我们才会点击这里。

MobileElement sliderElement=driver.findElement(By.id("com.offerup:id/shipping_checkbox"));
 String sliderStatus=sliderElement.getAttribute("checked");
            if (sliderStatus.equalsIgnoreCase("true")) {

              sliderElement.click();    
            }
        }

【讨论】:

    【解决方案3】:

    编辑:我在阅读本文时犯了一个错误,并错过了它是一个 Android 应用程序,因此 Javascript 可能不可用。此评论只会帮助在 Web 浏览器测试或任何可以在应用程序上执行 Javascript 的情况下遇到相同问题的人。

    检查的额外可能性。 它优于其他选项。

    using OpenQA.Selenium.Support.Extensions;
    
    string selector = "com.offerup:id/shipping_checkbox";
    if(driver.ExecuteJavascript<bool>($"return document.getElementById('{selector}').checked")) {
    
        driver.findElement(By.id($"{selector}")).click();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多