Хотелось бы понять, почему switch_to_alert () получает зачеркивание и как исправить - PullRequest
1 голос
/ 21 апреля 2019

Я пытаюсь «принять» простое модальное оповещение (всплывающее окно на экране только с кнопкой «ОК»), но switch_to_alert () в driver.switch_to_alert () получает зачеркнутый сигнал (на pycharm).

Я использую управляемый данными скрипт тестирования с OpenPyxl. Я написал условие, которое берет имя пользователя и пароль из электронной таблицы и добавляет их для входа на веб-страницу. Если вход выполнен успешно, код работает, но условие «else» (т. Е. Сбой входа в систему не удается) вызывает проблемы из-за всплывающего предупреждения, и я не уверен, как его закрыть.

Я хотел бы понять, почему driver.switch_to_alert () получает зачеркивание и как его исправить.

Я добавил следующую строку в «else» условие «driver.switch_to_alert ()», но switch_to_alert () имеет удар, хотя.

Если я переместлю driver.switch_to_alert () выше строки driver = self.driver, зачеркивание не произойдет.

В качестве альтернативы, если я просто пишу switch_to_alert () в условии else, не будет зачеркивания, но код завершится неудачно, когда вызывается условие else. Я получаю сообщение об ошибке: selenium.common.exceptions.UnexpectedAlertPresentException: текст оповещения: нет Сообщение: диалоговое окно с запросом уволенного пользователя: Неверный пользователь или пароль

Я также попытался получить полную информацию (возврат на домашнюю страницу), но тоже не получилось.

def test_login_valid(self):

    driver = self.driver
    driver.get('http://www.demo.guru99.com/V4/')

    #count how many rows in spreadsheet and add read username and password 
    #and add to www.demo.guru99.com login
    for r in range(2, rows + 1):
        username = spreadsheet.readData(path, "Sheet1", r, 1)
        password = spreadsheet.readData(path, "Sheet1", r, 2)
        login.enter_username(username)
        login.enter_password(password)
        login.click_login()
   #If login is successful then pass test
        if driver.title == "Guru99 Bank Manager HomePage":
            print("test is passed")
            spreadsheet.writeData(path, "Sheet1", r, 3, "test passed")
   #return back to home page - i dont think i should need this line???
            driver.get('http://www.demo.guru99.com/V4/')
        else:
            print("test failed")
            spreadsheet.writeData(path, "Sheet1", r, 3, "test failed")
   #accept the alert popup and close - python is striking though the bold
            driver.switch_to_alert().accept() # error shown on this line

Я ожидаю, что когда имя пользователя или пароль при входе неверны, тогда условие «else» должно быть в состоянии выбрать «ok» в уведомлении о предупреждении. Это закроет всплывающее окно и в результате тест вернется на домашнюю страницу.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Следуя совету @DebanjanB, я изменил свой код следующим (я включаю только код, необходимый для контекста). Однако я получаю следующую ошибку:

selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
Message: Dismissed user prompt dialog: User or Password is not valid

Еще один комментарий, который нужно сделать при использовании Pycharm. Когда вы видите слово «предупреждение» в коде, оно выделяется желтым цветом. Пишарм советует Заявление, кажется, не имеет никакого эффекта Информация о проверке: эта проверка обнаруживает заявления без какого-либо эффекта. Я не уверен, что это значит.

    from selenium import webdriver
    from selenium.webdriver.common.by import By # **This is greyed out in pycharm. is this** correct?
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

        def test_login_valid(self):

            driver = self.driver
            driver.get('http://www.demo.guru99.com/V4/')
            login = LoginPage(driver)
            for r in range(2, rows + 1):
#inserts username and password from spreadsheet - if username/password does not login the else condition is called and alter is raised. I'm trying to close this popup alert.
                if driver.title == "Guru99 Bank Manager HomePage":
                    print("test is passed")
                    spreadsheet.writeData(path, "Sheet1", r, 3, "test passed")
                    driver.get('http://www.demo.guru99.com/V4/')
                else:
                    print("test failed")
                    spreadsheet.writeData(path, "Sheet1", r, 3, "test failed")
# This line should close the alert but appears to cause error
                    **WebDriverWait(driver, 300).until(EC.alert_is_present).accept**

изображение оповещения

0 голосов
/ 21 апреля 2019

Пара баллов:

...