Очистить все уведомления с панели уведомлений любого устройства Android с помощью appium

Как удалить все уведомления из панели уведомлений в Android с помощью appium на любом из устройств Android.

Я старался

    MobileElement clearallnotification=null;
    driver.openNotifications();
    try {
        clearallnotification= driver.findElement(By.xpath("//android.widget.ImageView[contains(@content-desc, 'Clear all notifications')]"));
        clearallnotification.click();
    }catch(ElementNotFoundException e) {
        clearallnotification= driver.findElementById("com.android.systemui:id/delete");
        clearallnotification.click();
    }
    driver.pressKeyCode(AndroidKeyCode.BACK);

Но это работает только для определенных устройств, как сделать его универсальным для всех типов устройств?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 800
2

Ответы 2

Приведенный ниже код сделает это. Это сработало для меня.

из веб-драйвера импорта appium из appium.webdriver.common.touch_action импортировать TouchAction из времени импортировать сон импортировать pytest

класс TestScrollAndroid: «Класс для запуска тестов с приложением Chess Free»

@pytest.fixture(scope='function')
def driver(self, request):
    "Setup for the test"
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '8.1.0'
    desired_caps['deviceName'] = 'Realme 2 Pro'
    desired_caps['noReset'] = True
    desired_caps['udid'] = '2032609e'
    desired_caps['allowTestPackages'] = True
    # Returns abs path relative to this file and not cwd
    desired_caps['app'] = "D:\\Chess Free.apk"
    desired_caps['appPackage'] = 'uk.co.aifactory.chessfree'
    desired_caps['appActivity'] = '.ChessFreeActivity'
    #desired_caps['autoWebview'] = True

    #calling_request = request._pyfuncitem.name
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    driver.implicitly_wait(10)

    def tearDown():
        print("Tear down the test")
        driver.quit()

    request.addfinalizer(tearDown)
    return driver

def test_scroll_notificaion(self,driver):
    driver.open_notifications()
def test_clear_all_notification(self, driver):
    driver.open_notifications()
    if (driver.find_elements_by_id("com.android.systemui:id/clear_all_button"))
        element = driver.find_element_by_id("com.android.systemui:id/clear_all_button")
        element.click()
    assert(not driver.find_elements_by_id("android:id/title"))
appium.io/docs/en/commands/device/system/open-notifications попробуйте это... это откроет ваши уведомления, а оставшийся код можно будет изменить на java. Пингуйте меня, если у вас есть какие-либо проблемы. Идентификатор не будет меняться от устройства к устройству, потому что это функция Android. Это может измениться из-за версии. Вы должны позаботиться об этом, что означает больше "||" чеки.
Ankit Pande 02.04.2019 13:07

Это то, что пробовали driver.openNotifications(); try { clearallnotification= driver.findElement(By.xpath("//android.widget.ImageView[cont‌​ains(@content-desc, 'Удалить все уведомления')]")); очистить все уведомления.щелчок(); } catch(ElementNotFoundException e) { clearallnotification= driver.findElementById("com.android.systemui:id/delete"); очистить все уведомления.щелчок(); } driver.pressKeyCode(AndroidKeyCode.BACK);

mahadev gouda 02.04.2019 13:17

Какую ошибку вы получаете?

Ankit Pande 02.04.2019 13:31

Если вы используете Webdriver.IO, вот решение: $('~Очистить,Кнопка').click()

Другие вопросы по теме