Какую команду я использую, чтобы исправить эту проблему? - PullRequest
0 голосов
/ 12 марта 2019

Моя главная цель - создать программу, которая может автоматизировать приложение android , чтобы все, что вы делали пальцами.

enter image description here

Я написал эту строку кода, чтобы при включении этого переключателя ON код переключал его OFF .

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

Но когда я снова запускаю свой код, этот переключатель по умолчанию теперь OFF .

Мне нужна команда, которая оставляет коммутатор в покое, если он уже OFF .

Кто-нибудь знает, какую команду использовать?

Ответы [ 3 ]

1 голос
/ 12 марта 2019

Вам необходимо проверить, включен ли переключатель. Вы можете добиться этого, используя следующий код:

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();
}
0 голосов
/ 12 марта 2019

Редактировать: я сделал ошибку, прочитав это, и пропустил, что это было приложение для Android, поэтому Javascript, вероятно, недоступен. Этот комментарий поможет только кому-то с такой же проблемой при тестировании веб-браузера или в любой ситуации, когда 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();

}
0 голосов
/ 12 марта 2019

Есть 2 способа проверить, установлен ли ползунок на или на .

Это детали узла Slider.

enter image description here

Вариант-1: с помощью text

Здесь мы будем нажимать, только если слайдер включен.

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();    
            }
        }
...