Правильный формат пути к элементу

Я хотел бы знать, как правильно (официально) использовать путь к элементу в Robot Framework. Согласно документу:

Допустим, я хочу использовать XPath. Если я понимаю, как правильно использовать его, например, в KW:

Wait Until Page Contains Element    locator=xpath://*[@id = "post-message-container"]

Но во многих случаях, погуглив, я находил вот это:

Wait Until Page Contains Element    xpath=//*[@id = "post-message-container"]

Удивительно, но оба работают, но я не думаю, что второй должен. Не могли бы вы помочь мне решить эту путаницу?

Я думаю, вы имеете в виду SeleniumLibrary. Согласно документации — Явная стратегия локатора указывается с помощью префикса с использованием syntax strategy:value или strategy=value. Первый синтаксис предпочтительнее, поскольку второй идентичен синтаксису именованных аргументов Robot Framework, и это может вызвать проблемы. Итак, я думаю, лучше всего использовать метод xpath://div?

Pramesh 16.04.2024 13:05

@Pramesh, можешь ли ты показать мне случай «стратегия = значение» в документации? Я не вижу этого, могу найти только «стратегию:ценность». Хочу спросить, почему вы ответили в комментарии, а не в "Ответить"? В этом случае невозможно «Принять» ваш ответ.

akoel 16.04.2024 14:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В официальной документации нет примеров strategy=value, поскольку рекомендуемый синтаксис — strategy:value. Однако, если вы посмотрите на другую похожую библиотеку под названием Библиотека браузера, вы обнаружите, что они использовали синтаксис strategy=value. Я думаю, это просто зависит от библиотеки и ее рекомендаций.

Python позволяет передавать аргументы метода/функции вне порядка, когда вы упоминаете имя аргумента. Например:

def foo(x, y):
  print(f"x: {x}")
  print(f"y: {y}")

foo(1,2)
foo(y=1,x=2)

Скорее всего, это связано с тем, как реализованы kwargs в Python. Поскольку сам робот работает на Python, он соблюдает это соглашение.

Наиболее типичным местом использования этого соглашения является использование кваргов, но в данном конкретном случае локатор является обычным позиционным аргументом, поскольку это ключевое слово выглядит следующим образом:

    @keyword
    def wait_until_page_contains_element(
        self,
        locator: Union[WebElement, None, str],
        timeout: Optional[timedelta] = None,
        error: Optional[str] = None,
        limit: Optional[int] = None,
    ):

В этом случае необязательными являются только таймаут, ошибка и лимит (например, они имеют значение по умолчанию, если значение не передано).

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

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