2014-12-05 4 views
2

Я пытаюсь принять предупреждение javascript, которое появляется при удалении элемента на моей веб-странице. Когда я использую accept_alert() или dismiss_alert(), я получаю сообщение NoAlertPresentException: Message: u'no alert open\n. Мой код выглядит следующим образом:NoAlertPresentException при попытке принять оповещение с использованием SST Python

click_element(get_element_by_xpath('//*[@id="tracker"]/table[4]/tbody/tr/td[1]/a[1]'),wait=True) 
accept_alert('Do you wish to delete?') 

я только работал с ТПМ в течение 2-х недель, так что я может отсутствовать простое решение.

Код, который вызывает Javascript предупреждение заключается в следующем:

<a href="javascript: void(0);" onclick="return DeleteFood(1293652875);" class="track_remove" title="Remove">⊗</a> 
+0

Можете ли вы показать фрагмент кода HTML элемента? –

+0

Вопрос обновлен кодом, который вызывает предупреждение javascript. – Brenda

ответ

1

Вы должны позвонить click_element с wait=False см this

Итак, что-то вроде следующего должно работать

click_element(get_element_by_xpath('//*[@id="tracker"]/table[4]/tbody/tr/td[1]/a[1]'),wait=False) 
accept_alert('Do you wish to delete?') 
+0

По-прежнему получает 'NoAlertPresentException'. – Brenda

+1

Я снова посмотрел на API и, похоже, SST не требует 'switch to alert'. Таким образом, два возможных решения могут передаваться как для параметра 'accept_alert'. таких как 'accept_alert (expected_text = None, text_to_write = None)', если вам не нужно передавать 'text' или просто' accept_alert() ' – Saifur

+0

, первый обработчик' accept_alert (expected_text = None, text_to_write = None) '. Спасибо! – Brenda

0

Пожалуйста, попробуйте ниже после нажатия на элемент, который открывает предупреждения

try: 
    WebDriverWait(browser, 3).until(EC.alert_is_present()) 

    alert = browser.switch_to_alert.accept() 

    print "alert accepted" 
except TimeoutException: 
    print "no alert" 
+0

Что вызывает 'AssertionError: Не удалось идентифицировать элемент: 0 найденных элементов – Brenda

+0

Попробовать обновленный код –

+0

Теперь получение объекта' AttributeError: 'module не имеет атрибута' TimeoutException''. Я сделал «import selenium.common», чтобы вытащить исключение. Итак, я не уверен, почему я получаю это. Это потому, что SST не всегда хорошо играет с селеновым кодом? – Brenda

Смежные вопросы