Функция просто пропускает выполнение при вызове - без ошибок отладчика - PullRequest
0 голосов
/ 31 мая 2018

Я отлаживал код, и когда программа достигает этой строки кода (более крупной функции) ...

login_result = login(driver)

... она переходит на следующую строку (без ошибок или чего-либо еще)

Я пытался просто запустить его, но выводится тот же результат.

Вот функция login():

def login(driver):

    # Check if logged in (or login failed)
    login_result = 1
    login_check_elements = driver.find_elements_by_tag_name('button')
    for login_check in login_check_elements:
        if(login_check.text == "Log in" and login_check.is_enabled()):
            # If there is a login button on the screen and the button is enabled by default it means
            # that the driver is on the account page and is not logged in
            login_result = 0

    # If login failed - return 1
    if(login_result == 1):
        return 1
    else:
        username, password = find_input_elements(driver)
        username.send_keys("username")
        time.sleep(randint(1, 3))
        password.send_keys("password")
        time.sleep(randint(1, 3))
        login_button = find_login_button(driver)
        login_button.click()
        return 0

* РЕДАКТИРОВАТЬ: я забыл сказать, что даЯ включил точки останова почти в каждой строке функции, включая первую.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Мой ответ может не дать решение, которое вы ищете, но я попробую.Вы не указали, какая проверка выполняется после получения возвращаемого значения из функции login_result.Если возвращаемое значение не подтверждено, и я думаю, именно поэтому ваш код просто продолжает выполнение.И в функции нет никаких исключений, она предназначена для возврата, и пользователь должен что-то сделать с результатом

def login(driver):

    # Check if logged in (or login failed)
    login_check_elements = driver.find_elements_by_tag_name('button')
    for login_check in login_check_elements:
        if login_check.text == "Log in" and login_check.is_enabled():
            # If there is a login button on the screen and the button is enabled by default it means
            # that the driver is on the account page and is not logged in
            return False
    else:
        username, password = find_input_elements(driver)
        username.send_keys("username")
        time.sleep(randint(1, 3))
        password.send_keys("password")
        time.sleep(randint(1, 3))
        login_button = find_login_button(driver)
        login_button.click()
        return True

login_result = login(driver)
if not login_result:
   # Error out or do something
0 голосов
/ 31 мая 2018

Я предполагаю, что строка, проверяющая элементы, не имеет ни одного в своем списке.

for login_check in login_check_elements:

Попробуйте еще раз запустить код и проверить значение логина_ресурса

def login(driver):

# Check if logged in (or login failed)
login_result = 1
login_check_elements = driver.find_elements_by_tag_name('button')
for login_check in login_check_elements:
    print('element found')
    if(login_check.text == "Log in" and login_check.is_enabled()):
        # If there is a login button on the screen and the button is enabled by default it means
        # that the driver is on the account page and is not logged in
        login_result = 0

# If login failed - return 1
if(login_result == 1):
    return 1
else:
    username, password = find_input_elements(driver)
    username.send_keys("username")
    time.sleep(randint(1, 3))
    password.send_keys("password")
    time.sleep(randint(1, 3))
    login_button = find_login_button(driver)
    login_button.click()
    return 0

login_result = login(driver)
print(login_result)

Скорее всего, установив логин_ресурса в 1 наверху, он никогда не найдет элементы и перейдет прямо к возврату 1

...