Переключение окон Selenium 2: Java

Привет, в основном я пытаюсь переключиться на всплывающее окно, затем нажмите кнопку в этом всплывающем окне, но почему-то я получаю ошибки.

Вот пример веб-страницы

http://i42.photobucket.com/albums/e326/limpep/example.png

и вот мой код

 for (String handle : driver.getWindowHandles()) {
                                 driver.switchTo().window(handle);

                               }


                       WebElement clicksa  =
driver.findElement(By.id("ButtonCancle"));
                           clicksa.sendKeys(Keys.ENTER);
                           driver.switchTo().defaultContent();

Ошибки, которые я получаю

    Exception in thread "AWT-EventQueue-0" org.openqa.selenium.NoSuchElementException: Unable to find element by id using "Accept Address" (7)
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_21'
Driver info: driver.version: ie
    at org.openqa.selenium.ie.ErrorHandler.verifyErrorCode(ErrorHandler.java:38)
    at org.openqa.selenium.ie.Finder.handleErrorCode(Finder.java:252)
    at org.openqa.selenium.ie.Finder.findElementById(Finder.java:126)
    at org.openqa.selenium.By$1.findElement(By.java:66)
    at org.openqa.selenium.ie.Finder.findElement(Finder.java:240)
    at org.openqa.selenium.ie.InternetExplorerDriver.findElement(InternetExplorerDriver.java:297)
    at com.capscanWebServers.CRMTesting$2.actionPerformed(CRMTesting.java:112)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

С уважением


person Ergun Polat    schedule 20.10.2010    source источник
comment
какую ошибку вы получаете? Я получаю ошибки, не объясняет, что пошло не так   -  person AutomatedTester    schedule 20.10.2010


Ответы (2)


Прежде всего, вы, вероятно, не переключаетесь в правильное окно. Вы перебираете все окна и переключаетесь на первое, которое может быть вашим главным окном.

Если всплывающее окно создано window.createPopup(), то вы не сможете переключиться на него - такие окна не поддерживаются Selenium 2. Есть некоторый прогресс в его реализации - см. http://code.google.com/p/selenium/issues/detail?id=27

person Sergii Pozharov    schedule 21.10.2010
comment
Спасибо за ответ буду разбираться дальше - person Ergun Polat; 21.10.2010
comment
Ну, я использую диалоговое окно, и там не так много альтернатив селену - person Ergun Polat; 22.10.2010
comment
Что вы подразумеваете под диалоговым окном? Это предупреждение JavaScript()? Можете выложить кусок html? - person Sergii Pozharov; 22.10.2010
comment
хорошо, я назвал диалоговое окно form1, но я все еще получаю сообщение об ошибке при выполнении driver.switchTo().frame(form1) или даже driver.switchTo().window(form1) - person Ergun Polat; 05.11.2010
comment
Похоже, нам придется подождать, когда будет реализована поддержка всплывающих окон, алертов и модальных диалогов. - person Sergii Pozharov; 06.11.2010

Я заметил, что идентификатор, который вы ищете, - «ButtonCancle». Там опечатка. Возможно ли, что вам следует искать «ButtonCancel»?

person Ladlestein    schedule 21.10.2010
comment
nop при попытке использовать другое имя кнопки, например, «Принять адрес», я все равно получаю то же сообщение об ошибке. - person Ergun Polat; 21.10.2010