package com.redheap.selenium.components; import com.redheap.selenium.component.AdfButton; import com.redheap.selenium.dialogs.NewFileWindowDialog; import com.redheap.selenium.pages.ButtonDemoPage; import java.util.HashSet; import java.util.Set; import oracle.adf.view.rich.automation.selenium.Dialog; import oracle.adf.view.rich.automation.selenium.DialogManager; import static org.junit.Assert.*; import org.junit.Test; import org.openqa.selenium.remote.RemoteWebDriver; public class ButtonTest extends PageTestBase<ButtonDemoPage> { @Test public void testComponentGuideButton() { pages.goHome().clickComponentGuideButton(); } @Test public void testDisabledButton() { AdfButton button = pages.goHome().findDisabledButton(); assertTrue(button.isDisabled()); assertTrue(button.hasIcon()); } @Test public void testNoIconButton() { AdfButton button = pages.goHome().findNoIconButton(); assertFalse(button.isDisabled()); assertFalse(button.hasIcon()); button.click(); } @Test public void testBoldButton() { ButtonDemoPage page = pages.goHome(); AdfButton bold = page.findBoldButton(); assertFalse(bold.isSelected()); bold.click(); assertTrue(bold.isSelected()); bold.click(); assertFalse(bold.isSelected()); } @Test public void testArrangeButton() { ButtonDemoPage page = pages.goHome(); AdfButton button = page.findArrangeButton(); // clicking the button should not open the popup button.click(); assertFalse(page.findArrangeButtonPopupContent().isDisplayed()); // clicking the dropdown button should open popup button.clickDropdownButton(); assertTrue(page.findArrangeButtonPopupContent().isDisplayed()); // clicking other button should close popup page.findNoIconButton().click(); assertFalse(page.findArrangeButtonPopupContent().isDisplayed()); } @Test public void testPopupButton() { ButtonDemoPage page = pages.goHome(); AdfButton button = page.findShowPopupButton(); // clicking the button should open the popup (dropdown menu style) button.click(); assertTrue(page.findShowPopupButtonPopup().isPopupVisible()); // clicking item in popup menu should close popup page.findShowPopupButtonCopyMenuItem().click(); assertFalse(page.findShowPopupButtonPopup().isDisplayed()); } @Test public void testWindowPopupButton() { RemoteWebDriver webdriver = driver.getDriver(); ButtonDemoPage page = pages.goHome(); DialogManager dialogManager = driver.getDialogManager(); assertEquals(0, dialogManager.totalNumberOfDialogsOpen()); assertNull(dialogManager.getCurrentDialog()); // find an click af:button with useWindow='true' NewFileWindowDialog dialog = page.clickUseWindowButton(); // opens popup in new browser window // verify new dialog is opened and active assertEquals(1, dialogManager.totalNumberOfDialogsOpen()); Dialog firstDialog = dialogManager.getCurrentDialog(); assertNotNull(firstDialog); assertEquals("New File", firstDialog.getTitle(webdriver)); // close dialog by clicking Save button in dialog dialog.findSaveButton().clickWithDialogDetect(); assertEquals(0, dialogManager.totalNumberOfDialogsOpen()); } @Test public void testInlinePopupButton() { RemoteWebDriver webdriver = driver.getDriver(); ButtonDemoPage page = pages.goHome(); DialogManager dialogManager = driver.getDialogManager(); assertEquals(0, dialogManager.totalNumberOfDialogsOpen()); assertNull(dialogManager.getCurrentDialog()); // find an click af:button with useWindow='true' NewFileWindowDialog dialog = page.clickUseWindowInlineDocButton(); // opens popup in inline popup with iframe // verify new dialog is opened and active assertEquals(1, dialogManager.totalNumberOfDialogsOpen()); Dialog firstDialog = dialogManager.getCurrentDialog(); assertNotNull(firstDialog); assertEquals("New File", firstDialog.getTitle(webdriver)); // close dialog programatically (Save & Cancel buttons will throw error) assertFalse(dialog.findSaveButton().isDisabled()); dialog.close(); assertEquals(0, dialogManager.totalNumberOfDialogsOpen()); } @Test public void testTargetFrameBlankButton() { RemoteWebDriver webdriver = driver.getDriver(); ButtonDemoPage page = pages.goHome(); DialogManager dialogManager = driver.getDialogManager(); assertEquals(0, dialogManager.totalNumberOfDialogsOpen()); assertNull(dialogManager.getCurrentDialog()); String mainwindow = webdriver.getWindowHandle(); // find an click af:button with targetFrame='_blank' page.findTargetFrameBlankButton().click(); // verify new browser window has opened assertEquals(2, webdriver.getWindowHandles().size()); String newwindow = detectNewWindow(webdriver, mainwindow); webdriver.switchTo().window(newwindow); assertTrue(webdriver.getTitle().startsWith("Oracle")); webdriver.close(); // close current window webdriver.switchTo().window(mainwindow); assertEquals(1, webdriver.getWindowHandles().size()); assertEquals(mainwindow, webdriver.getWindowHandle()); assertEquals("button Demo", webdriver.getTitle()); } private String detectNewWindow(RemoteWebDriver webdriver, String mainwindow) { Set<String> handles = new HashSet<String>(webdriver.getWindowHandles()); handles.remove(mainwindow); return handles.iterator().next(); } public static void main(String[] args) { String[] args2 = { ButtonTest.class.getName() }; org.junit.runner.JUnitCore.main(args2); } @Override protected Class<ButtonDemoPage> getPageClass() { return ButtonDemoPage.class; } @Override protected String getJspxName() { return "button.jspx"; } }