Определить функцию более короткого ожидания - PullRequest
0 голосов
/ 08 мая 2018

Настройка

Я использую Selenium с Python 3.x для заполнения форм и использую общую функцию WebDriverWait для ожидания загрузки элементов. Например.

WebDriverWait(browser, 10).until(EC.visibility_of_element_located((By.CLASS_NAME, 'class-name')))

где browser = webdriver.Firefox('/my/path/to/geckodriver')


Задача

Эта строка часто возвращается в коде; Я хочу определить его более короткую версию, чтобы улучшить читаемость.

Пока у меня есть,

wait = WebDriverWait(browser, 10)

def wait(x,y):
    if x == 'cn':
        wait.until(EC.visibility_of_element_located((By.CLASS_NAME,y)))
    elif x == 'xp':
        wait.until(EC.visibility_of_element_located((By.XPATH,y)))     

но y плохо переносится, и я получаю,

AttributeError: 'function' object has no attribute 'until'.


Как правильно вставить y в функцию?

1 Ответ

0 голосов
/ 08 мая 2018
wait = WebDriverWait(browser, 10)

def wait(x,y):

Вы не должны иметь переменную и функцию с одинаковым именем в одной области видимости. Один перезапишет другой. Когда вы вызываете wait.until внутри функции wait, она думает, что вы имеете в виду «вызов метода until, принадлежащего функции с именем wait». Но у функций нет метода с именем wait.

Выберите другое имя для одного из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...