2013-04-11 2 views
3

Все, что я хочу, чтобы закрыть модальное диалоговое окно, в идеале, выполнив следующие действия:Как я могу взаимодействовать с этим модальным диалоговым окном с помощью Webdriver & Python?

browser.find_element_by_link_text("OK").click() 

дает NoSuchElementException: Message: u'The element could not be found' для ОК текста ссылки.

То же самое для XPath, когда я делаю это:

browser.find_element_by_xpath("//*[@id=\"modal\"]/div/div[2]/div/a").click() 

Я подозреваю, что это потому, что мне нужно поставить акцент на диалоге. Для этого я попробовал:

for handle in browser.window_handles: 
    browser.switch_to_window(handle) 
    if browser.find_element_by_class_name('popUp123') 
     browser.find_element_by_link_text("OK").click() 

дает NoSuchElementException: Message: u'The element could not be found' для класса.

также пробовали browser.switch_to_frame(ID OR NAME), но не могли найти его как раму.

Скажите, пожалуйста, я пропустил что-то явно очевидное.

Соответствующий исходный кадр (кратко):

<body id="modal"> 
    <div class="popUp123"> 
    <div class="button"> 
     <div class="centerbutton"> 
      <a href="#" class="close" onclick=parent.close"> 
       <span>OK</span> 
+0

Если ошибка делает не появляется, если вы поместите 'time.sleep (2)' befor кода, который вам может понадобиться, чтобы дождаться элемента. – User

ответ

3

Код ниже с помощью Java, и можно попробовать использовать следующий код преобразования его синтаксиса Python. Извините, поскольку я Webdriver - Java Tester, я не могу дать вам код Python. Надеюсь, это решит ваши требования.

Alert alertDialog = driver.switchTo().alert(); 
//Get the alert text 
String alertText = alertDialog.getText(); 
//Click the OK button on the alert. 
alertDialog.accept(); 

Cheers,

Махеш

1

Это синтаксис питона

from selenium.webdriver.remote.webdriver import WebDriver 

browser = WebDriver() 

# do other stuff here 

browser.switch_to_alert().accept() 

# continue with other stuff here 

Предупреждение апи находится в selenium.webdriver.common.alert