Как отключить автоматическое отключение неожиданного оповещения в Selenium Safari WebDriver - PullRequest
0 голосов
/ 25 апреля 2019

Когда UnexpectedAlertPresentException поднято в Selenium Safari WebDriver, я хочу получить предупреждение. Однако я не могу этого сделать, потому что Safari WebDriver автоматически поднимает предупреждение, когда оно поднимается. В результате окно предупреждения закрылось, и я столкнулся с NoAlertPresentException.

Прекрасно работает с Chrome WebDriver как один и тот же код. Я попытался установить требуемые возможности ниже. Но это не работает.

caps = DesiredCapabilities.SAFARI.copy()
caps['handlesAlerts'] = True
caps['unexpectedAlertBehaviour'] = 'ignore'


driver = webdriver.Safari(
    executable_path='/usr/bin/safaridriver',
    desired_capabilities = caps
)

try:
    driver.get(url)
    if browser == 'ie':
        fullpage_screenshot(driver, screenshot_name)
    else:
        save_screenshot(driver, screenshot_name)

except UnexpectedAlertPresentException:
    print('Screenshot Error:', UnexpectedAlertPresentException)
    if browser == 'ie':
        continue

        try:
            WebDriverWait(driver, 5).until(
                EC.alert_is_present(),
                'Timed out waiting for alert to appear'
            )                     
            alert = driver.switch_to_alert()
            memo[idx] = memo[idx] + str(alert.text)                        
            print('Alert Message:', alert.text)
            alert.accept()

            if not os.path.isdir('./errors/'):
                os.mkdir('./errors/')
            driver.get_screenshot_as_file('./errors/Error '+ screenID[idx] +'_'+ browser +'.png')

            memo[idx] = str(memo[idx]) + '\n' + str(UnexpectedAlertPresentException)                    
            continue

        except TimeoutException:
            print('No alert')
            continue

        except Exception as e:
            print('Inner Exception', e)
            continue

except Exception as e:
    memo[idx] = memo[idx] + str(e)
    print('Exception: ', e)
    continue

Это ожидаемый результат:

Screenshot Error: <class 'selenium.common.exceptions.UnexpectedAlertPresentException'>
Alert Message: <ERROR><![CDATA[No Data.]]></ERROR>

Вот фактический результат при возникновении UnexpectedAlertPresentException в Safari WebDriver .:

Screenshot Error: <class 'selenium.common.exceptions.UnexpectedAlertPresentException'>
No alert
Screenshot Error: <class 'selenium.common.exceptions.UnexpectedAlertPresentException'>
No alert
...