Использование оператора If / Elif / Else для определения объектов словаря для Selenium Python - PullRequest
0 голосов
/ 08 мая 2020

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

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

находится в modem.py:

modem_locators = {
    'serial_port_txt':  ["By.XPATH", "//fieldset[2]/legend", "Serial Port"],
}

находится в test_file.py:

.
.
from modem import modem_locators
.
.

    assertExpectedConditionTrue(driver, modem_locators.get('serial_port_txt')[0], modem_locators.get('serial_port_txt')[1], modem_locators.get('serial_port_txt'[2])

... проверяет, что «Последовательный порт» существует в расположении XPATH «// fieldset [2] / legend». Я хотел бы определить 'serial_port_txt' следующим образом:

ПРЕДУПРЕЖДЕНИЕ - КОД ПСЕВДО!

modem_locators = {
    if glob_var.platform == "A" or glob_var.platform == "B":
        'serial_port_txt':  ["By.XPATH", "//fieldset[2]/legend", "Serial Ports"],
    elif glob_var.plaform == "C":
        'serial_port_txt':  ["By.XPATH", "//fieldset[1]/legend", "Serial Ports"],
    else:
        'serial_port_txt':  ["By.XPATH", "//fieldset[1]/legend", "Serial Port"],

    'ip_addr':  ["By.ID", "ip_address"]
    'enable_checkbox':  ["By.ID", "my_checkbox"], 
}

Переменная «платформа» определяется заранее. Это можно сделать? Я открыт для создания переменной на основе платформы, для которой она c указана, но подумал, что сначала посмотрю, возможно ли это.

Кроме того, есть ли способ избавиться от 'get () ', или я в значительной степени застрял в нем, если собираюсь использовать словарь? Спасибо!

...