Когда 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