Arhn - архитектура программирования

Selenium два теста xpath в одном

Я пытаюсь совместить проверку для двух сценариев:

Если проверка запуска завершается ошибкой, мы получаем кнопку «Повторить попытку»:

el = WebDriverWait(self.driver, 10).until(
  EC.element_to_be_clickable((By.NAME, "Try again")))

Или проверка запуска прошла успешно, мы получаем запрос на ввод пин-кода в пользовательском объекте:

el = WebDriverWait(self.driver, 20).until(
  EC.element_to_be_clickable((By.XPATH, "//Custom/Edit")))

Как это можно объединить в одну проверку без проверки обоих: я пробовал следующее:

check = WebDriverWait(self.driver, 20).until(
  EC.element_to_be_clickable(
    (By.XPATH, "//Custom/Edit") or (By.NAME, "Try again")
))

Но проверяется только первый оператор or.


Ответы:


1

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

el = WebDriverWait(driver, 20).until(lambda x: (x.find_element_by_name("Try again"), x.find_element_by_xpath("//Custom/Edit")))

Альтернативным решением будет:

el = WebDriverWait(driver,20).until(lambda driver: driver.find_element(By.NAME,"Try again") and driver.find_element(By.XPATH,"//Custom/Edit"))

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

el = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[name='Try again'], Custom>Edit")))

использованная литература

11.09.2019
  • Замечательно, я бы хотел, чтобы это было в официальной документации на selenium-python.readthedocs.io 12.09.2019
  • Два вопроса: я не знаком с термином «клуб» с использованием пункта «ИЛИ». что это значит? Кроме того, почему в альтернативном примере кода между условиями стоит и вместо или? 12.01.2021
  • @rothloup Это лямбда-выражения для ожидания ожидаемых условий. Для более простого случая см. обсуждение selenium find_elements с двумя пунктами для текста? 12.01.2021
  • @DebanjanB: я знаю, что это лямбда-выражения. Я не понимаю, что означает «клуб» (звучит как разговорная речь, поиск в Google не дает многого), и почему условие ИЛИ проверяется с помощью И. 12.01.2021
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..