From 6c8f95889c237e74eda0eb47a1f0cbbe6456e374 Mon Sep 17 00:00:00 2001 From: Guillem Hernandez Sola Date: Sun, 18 Aug 2019 00:30:22 +0200 Subject: [PATCH 1/2] Added all examples --- cursoSeleniumWebdriver.iml | 44 ---------- pom.xml | 5 ++ .../agile611/testng/webdriver/AlertsTest.java | 66 ++++++++++++++ .../webdriver/BaseRemoteWebDriverTest.java | 32 +++++++ .../testng/webdriver/BaseSaucelabsTest.java | 43 +++++++++ .../agile611/testng/webdriver/BaseTest.java | 44 ++++++++++ .../agile611/testng/webdriver/BasicAuth.java | 13 +++ .../testng/webdriver/BrokenImages.java | 69 +++++++++++++++ .../testng/webdriver/ChallengingDomTest.java | 24 +++++ .../testng/webdriver/CheckBoxesTest.java | 29 ++++++ .../webdriver/DisappearingElementsTest.java | 21 +++++ .../testng/webdriver/DownloadTest.java | 88 +++++++++++++++++++ .../testng/webdriver/DragAndDropTest.java | 38 ++++++++ .../testng/webdriver/DropdownTest.java | 24 +++++ .../testng/webdriver/DuckDuckGoTest.java | 16 ++++ .../testng/webdriver/DynamicContentTest.java | 34 +++++++ .../testng/webdriver/DynamicControlsTest.java | 30 +++++++ .../agile611/testng/webdriver/HoversTest.java | 34 +++++++ .../testng/webdriver/InfiniteScrollTest.java | 14 +++ .../testng/webdriver/InterrogationTest.java | 20 +++++ .../testng/webdriver/KeyboardKeysTest.java | 24 +++++ .../testng/webdriver/LargeDeepDomTest.java | 41 +++++++++ .../testng/webdriver/ManipulationTest.java | 23 +++++ .../testng/webdriver/MultipleWindowsTest.java | 54 ++++++++++++ .../testng/webdriver/NavigationTest.java | 24 +++++ .../testng/webdriver/NestedFramesTest.java | 32 +++++++ .../testng/webdriver/StatusCodesTest.java | 78 ++++++++++++++++ .../agile611/testng/webdriver/TestABTest.java | 28 ++++++ .../agile611/testng/webdriver/UploadTest.java | 30 +++++++ .../testng/webdriver/pages/ResultsPage.java | 23 +++++ .../testng/webdriver/pages/SearchPage.java | 30 +++++++ 31 files changed, 1031 insertions(+), 44 deletions(-) delete mode 100644 cursoSeleniumWebdriver.iml create mode 100644 src/test/java/com/agile611/testng/webdriver/AlertsTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/BaseRemoteWebDriverTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/BaseSaucelabsTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/BaseTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/BasicAuth.java create mode 100644 src/test/java/com/agile611/testng/webdriver/BrokenImages.java create mode 100644 src/test/java/com/agile611/testng/webdriver/ChallengingDomTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/CheckBoxesTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/DisappearingElementsTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/DownloadTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/DropdownTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/DynamicContentTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/DynamicControlsTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/HoversTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/InfiniteScrollTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/InterrogationTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/KeyboardKeysTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/LargeDeepDomTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/ManipulationTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/MultipleWindowsTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/NavigationTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/NestedFramesTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/StatusCodesTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/TestABTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/UploadTest.java create mode 100644 src/test/java/com/agile611/testng/webdriver/pages/ResultsPage.java create mode 100644 src/test/java/com/agile611/testng/webdriver/pages/SearchPage.java diff --git a/cursoSeleniumWebdriver.iml b/cursoSeleniumWebdriver.iml deleted file mode 100644 index 5ca9659..0000000 --- a/cursoSeleniumWebdriver.iml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index c62aedb..e0f0439 100644 --- a/pom.xml +++ b/pom.xml @@ -54,5 +54,10 @@ selenium-chrome-driver 3.141.59 + + net.lightbody.bmp + browsermob-core + 2.1.5 + diff --git a/src/test/java/com/agile611/testng/webdriver/AlertsTest.java b/src/test/java/com/agile611/testng/webdriver/AlertsTest.java new file mode 100644 index 0000000..b172421 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/AlertsTest.java @@ -0,0 +1,66 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.Alert; +import org.openqa.selenium.By; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.annotations.Test; + +public class AlertsTest extends BaseTest { + + public void acceptAlert() { + try { + WebDriverWait wait = new WebDriverWait(driver, 2); + wait.until(ExpectedConditions.alertIsPresent()); + Alert alert = driver.switchTo().alert(); + alert.accept(); + } catch (Exception e) { + //exception handling + } + } + + public void dismissAlert() { + try { + WebDriverWait wait = new WebDriverWait(driver, 2); + wait.until(ExpectedConditions.alertIsPresent()); + Alert alert = driver.switchTo().alert(); + alert.dismiss(); + } catch (Exception e) { + //exception handling + } + } + + public void promptAlert() { + try { + WebDriverWait wait = new WebDriverWait(driver, 2); + wait.until(ExpectedConditions.alertIsPresent()); + Alert alert = driver.switchTo().alert(); + alert.sendKeys("Hola hola super hola"); + alert.accept(); + } catch (Exception e) { + //exception handling + } + } + + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("https://the-internet.herokuapp.com/javascript_alerts"); + driver.findElement(By.xpath(".//*[@id='content']/div/ul/li[1]/button")).click(); + Thread.sleep(2000); + acceptAlert(); + Thread.sleep(2000); + driver.findElement(By.xpath(".//*[@id='content']/div/ul/li[2]/button")).click(); + Thread.sleep(2000); + acceptAlert(); + Thread.sleep(2000); + driver.findElement(By.xpath(".//*[@id='content']/div/ul/li[2]/button")).click(); + Thread.sleep(2000); + dismissAlert(); + Thread.sleep(2000); + driver.findElement(By.xpath(".//*[@id='content']/div/ul/li[3]/button")).click(); + Thread.sleep(2000); + promptAlert(); + Thread.sleep(2000); + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/BaseRemoteWebDriverTest.java b/src/test/java/com/agile611/testng/webdriver/BaseRemoteWebDriverTest.java new file mode 100644 index 0000000..5b78a1e --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/BaseRemoteWebDriverTest.java @@ -0,0 +1,32 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; + +import java.io.File; +import java.net.URL; +import java.util.concurrent.TimeUnit; + +public class BaseRemoteWebDriverTest { + public RemoteWebDriver driver; + @BeforeClass(alwaysRun = true) //Inicialización del navegador + public void setUp() throws Exception { + DesiredCapabilities capabilities; + String browser = System.getProperty("browser"); + if (browser != null && browser.equalsIgnoreCase("chrome")) { + capabilities = DesiredCapabilities.chrome(); + } else { + capabilities = DesiredCapabilities.firefox(); + } + driver = new RemoteWebDriver(new URL("http://0.0.0.0:4444/wd/hub"), capabilities); + driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); + + } + + @AfterClass(alwaysRun = true) //El cierre del navegador + public void tearDown() throws Exception { + driver.quit(); + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/BaseSaucelabsTest.java b/src/test/java/com/agile611/testng/webdriver/BaseSaucelabsTest.java new file mode 100644 index 0000000..418fdb4 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/BaseSaucelabsTest.java @@ -0,0 +1,43 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; + +import java.net.URL; +import java.util.concurrent.TimeUnit; + +public class BaseSaucelabsTest { + public RemoteWebDriver driver; + @BeforeClass(alwaysRun = true) //Inicialización del navegador + public void setUp() throws Exception { + DesiredCapabilities capabilities; + String browser = System.getProperty("browser"); + if (browser != null && browser.equalsIgnoreCase("chrome")) { + capabilities = DesiredCapabilities.chrome(); + } + else if(browser != null && browser.equalsIgnoreCase("safari")) { + capabilities = DesiredCapabilities.safari(); + } + else if(browser != null && browser.equalsIgnoreCase("ie")) { + capabilities = DesiredCapabilities.internetExplorer(); + } + else if(browser != null && browser.equalsIgnoreCase("edge")) { + capabilities = DesiredCapabilities.edge(); + capabilities.setCapability("platform", "Windows 10"); + capabilities.setCapability("version", "15.15063"); + } + else { + capabilities = DesiredCapabilities.firefox(); + } + driver = new RemoteWebDriver(new URL("http://selgp:ee557a77-606f-451d-9c8b-a4bb3ef03c90@ondemand.saucelabs.com:80/wd/hub"), capabilities); + driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); + + } + + @AfterClass(alwaysRun = true) //El cierre del navegador + public void tearDown() throws Exception { + driver.quit(); + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/BaseTest.java b/src/test/java/com/agile611/testng/webdriver/BaseTest.java new file mode 100644 index 0000000..0c573df --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/BaseTest.java @@ -0,0 +1,44 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; + +import java.io.File; +import java.util.concurrent.TimeUnit; + +import static org.testng.Assert.fail; + +public class BaseTest { + public WebDriver driver; + public static JavascriptExecutor jse; + + @BeforeClass(alwaysRun = true) //Inicialización del navegador + public void setUp() throws Exception { + DesiredCapabilities capabilities; + String browser = System.getProperty("browser"); + if (browser != null && browser.equalsIgnoreCase("firefox")) { + capabilities = DesiredCapabilities.firefox(); + System.setProperty("webdriver.gecko.driver", + "src" + File.separator + "main" + + File.separator + "resources" + + File.separator + "geckodriver-macos"); + driver = new FirefoxDriver(capabilities); + } else { + capabilities = DesiredCapabilities.chrome(); + System.setProperty("webdriver.chrome.driver", "src" + File.separator + "main" + File.separator + "resources" + File.separator + "chromedriver-macos"); + driver = new ChromeDriver(capabilities); + } + driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); + jse = (JavascriptExecutor) driver; + } + + @AfterClass(alwaysRun = true) //El cierre del navegador + public void tearDown() throws Exception { + driver.quit(); + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/BasicAuth.java b/src/test/java/com/agile611/testng/webdriver/BasicAuth.java new file mode 100644 index 0000000..08baa81 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/BasicAuth.java @@ -0,0 +1,13 @@ +package com.agile611.testng.webdriver; + +import org.testng.annotations.Test; + +public class BasicAuth extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("https://admin:admin@the-internet.herokuapp.com/basic_auth"); + Thread.sleep(5000); + + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/BrokenImages.java b/src/test/java/com/agile611/testng/webdriver/BrokenImages.java new file mode 100644 index 0000000..d152076 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/BrokenImages.java @@ -0,0 +1,69 @@ +package com.agile611.testng.webdriver; + +import net.lightbody.bmp.BrowserMobProxy; +import net.lightbody.bmp.BrowserMobProxyServer; +import net.lightbody.bmp.client.ClientUtil; +import net.lightbody.bmp.core.har.HarEntry; +import net.lightbody.bmp.proxy.CaptureType; +import org.openqa.selenium.By; +import org.openqa.selenium.Proxy; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.assertThat; + +public class BrokenImages { + WebDriver driver; + BrowserMobProxy proxy; + + @BeforeMethod + public void setUp() throws Exception { + proxy = new BrowserMobProxyServer(); + proxy.start(0); + Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability(CapabilityType.PROXY, seleniumProxy); + System.setProperty("webdriver.gecko.driver", + "src" + File.separator + "main" + + File.separator + "resources" + + File.separator + "geckodriver-macos"); + driver = new FirefoxDriver(capabilities); + proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT); + } + + @AfterMethod + public void tearDown() { + proxy.stop(); + driver.quit(); + } + + @Test + public void allImagesLoaded() { + proxy.newHar(); + driver.navigate().to("http://the-internet.herokuapp.com/broken_images"); + List images = driver.findElements(By.tagName("img")); + List brokenImages = new ArrayList(); + List harEntries = proxy.getHar().getLog().getEntries(); + for (int entry = 0; entry < harEntries.size(); entry++) { + for (int image = 0; image < images.size(); image++) { + if (harEntries.get(entry).getRequest().getUrl().equals( + images.get(image).getAttribute("src")) + & harEntries.get(entry).getResponse().getStatus() == 404) + brokenImages.add(images.get(image).getAttribute("src")); + } + } + List emptyCollection = new ArrayList(); + assertThat(brokenImages, is(emptyCollection)); + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/ChallengingDomTest.java b/src/test/java/com/agile611/testng/webdriver/ChallengingDomTest.java new file mode 100644 index 0000000..4fff743 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/ChallengingDomTest.java @@ -0,0 +1,24 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import java.util.List; + +public class ChallengingDomTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("https://the-internet.herokuapp.com/challenging_dom"); + List botons = + driver.findElements( + By.xpath(".//div[@class='example']/div/div/div[1]/a")); + for (int i = 0; i < botons.size(); i++) { + WebElement botonDeTurno = + driver.findElement( + By.xpath(".//div[@class='example']/div/div/div[1]/a[" + (i + 1) + "]")); + botonDeTurno.click(); + } + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/CheckBoxesTest.java b/src/test/java/com/agile611/testng/webdriver/CheckBoxesTest.java new file mode 100644 index 0000000..be87eb8 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/CheckBoxesTest.java @@ -0,0 +1,29 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; + +public class CheckBoxesTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + //1 Navegar hasta la página + driver.navigate().to("https://the-internet.herokuapp.com/checkboxes"); + //2 Mirar que el checkbox2 está marcado + WebElement checkbox2 = + driver.findElement(By.xpath(".//*[@id='checkboxes']/input[2]")); + assertTrue(checkbox2.getAttribute("checked").equals("true")); + //2.1 Mirar el checkbox1 que NO está marcado + WebElement checkbox1 = + driver.findElement(By.xpath(".//*[@id='checkboxes']/input[1]")); + assertNull(checkbox1.getAttribute("checked")); + //3 Marcar checkbox1 + checkbox1.click(); + //4 Mirar que ha quedado marcado + assertTrue(checkbox1.getAttribute("checked").equals("true")); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/DisappearingElementsTest.java b/src/test/java/com/agile611/testng/webdriver/DisappearingElementsTest.java new file mode 100644 index 0000000..f4e1863 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DisappearingElementsTest.java @@ -0,0 +1,21 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +public class DisappearingElementsTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("https://the-internet.herokuapp.com/disappearing_elements"); + for (int i = 0; i < 10; i++) { + WebElement elementsDelMenu = + driver.findElement( + By.xpath(".//*[@id='content']/div/ul/li[last()]")); + elementsDelMenu.click(); + driver.navigate().back(); + driver.navigate().refresh(); + } + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/DownloadTest.java b/src/test/java/com/agile611/testng/webdriver/DownloadTest.java new file mode 100644 index 0000000..62d496c --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DownloadTest.java @@ -0,0 +1,88 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.firefox.FirefoxProfile; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.io.File; +import java.util.HashMap; +import java.util.UUID; + +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsNot.not; +import static org.junit.Assert.assertThat; + +public class DownloadTest extends BaseTest { + File folder; + + @BeforeMethod + public void setUp() { + folder = new File("src" + File.separator + "main" + File.separator + "resources" + File.separator + UUID.randomUUID().toString()); + //Chrome + DesiredCapabilities capabilities = DesiredCapabilities.chrome(); + System.setProperty("webdriver.chrome.driver", "src" + File.separator + "main" + File.separator + "resources" + File.separator + "chromedriver-macos"); + String downloadFilepath = folder.getAbsolutePath(); + HashMap chromePrefs = new HashMap(); + chromePrefs.put("profile.default_content_settings.popups", 0); + chromePrefs.put("download.default_directory", downloadFilepath); + ChromeOptions options = new ChromeOptions(); + options.setExperimentalOption("prefs", chromePrefs); + capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); + capabilities.setCapability(ChromeOptions.CAPABILITY, options); + driver = new ChromeDriver(capabilities); + + //Firefox + /*DesiredCapabilities capabilities = DesiredCapabilities.firefox(); + System.setProperty("webdriver.gecko.driver", + "src" + File.separator + "main" + + File.separator + "resources" + + File.separator + "geckodriver-macos"); + FirefoxProfile profile = new FirefoxProfile(); + profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream;application/csv;text/csv;application/vnd.ms-excel;"); + profile.setPreference("browser.helperApps.alwaysAsk.force", false); + profile.setPreference("browser.download.manager.showWhenStarting", false); + profile.setPreference("browser.download.folderList", 2); + profile.setPreference("browser.download.dir", folder.getAbsolutePath()); + capabilities.setCapability(FirefoxDriver.PROFILE, profile); + driver = new FirefoxDriver(capabilities);*/ + } + + @AfterMethod + public void tearDown() { + driver.quit(); + } + + @Test + public void download() throws Exception { + folder.mkdir(); + driver.get("http://the-internet.herokuapp.com/download"); + Thread.sleep(2000); + Actions actions = new Actions(driver); + WebElement link = driver.findElement(By.xpath("/html[1]/body[1]/div[2]/div[1]/div[1]/a[1]")); + actions.dragAndDrop(link, link).build().perform(); + // Wait 2 seconds to download file + Thread.sleep(2000); + File[] listOfFiles = folder.listFiles(); + // Make sure the directory is not empty + assertThat(listOfFiles.length, is(not(0))); + for (File file : listOfFiles) { + // Make sure the downloaded file(s) is(are) not empty + assertThat(file.length(), is(not((long) 0))); + } + String[] entries = folder.list(); + for (String s : entries) { + File currentFile = new File(folder.getPath(), s); + currentFile.delete(); + } + folder.delete(); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java b/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java new file mode 100644 index 0000000..573407a --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DragAndDropTest.java @@ -0,0 +1,38 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.testng.annotations.Test; + +public class DragAndDropTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("http://compendiumdev.co.uk/selenium/testpages/gui_user_interactions.html"); + WebElement draggable1 = driver.findElement(By.xpath(".//*[@class='draganddrops']/div/div[1]")); + WebElement draggable2 = driver.findElement(By.id("draggable2")); + WebElement droppable1 = driver.findElement(By.id("droppable1")); + WebElement droppable2 = driver.findElement(By.id("droppable2")); + + Actions dragAndDrop = new Actions(driver); + dragAndDrop.dragAndDrop(draggable1, droppable1).perform(); + Thread.sleep(4000); + dragAndDrop.dragAndDrop(draggable2, droppable2).perform(); + Thread.sleep(4000); + + + /* + dragAndDrop + .clickAndHold(draggable2) + .moveToElement(droppable1) + .release().build().perform(); + Thread.sleep(4000); + dragAndDrop + .clickAndHold(draggable2) + .moveToElement(droppable2) + .release().build().perform(); + Thread.sleep(4000); + */ + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/DropdownTest.java b/src/test/java/com/agile611/testng/webdriver/DropdownTest.java new file mode 100644 index 0000000..5b88575 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DropdownTest.java @@ -0,0 +1,24 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import java.util.List; + +public class DropdownTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver + .navigate().to("https://the-internet.herokuapp.com/dropdown"); + List options = + driver.findElements(By.xpath(".//*[@id='dropdown']/option")); + for (int i = 1; i < options.size(); i++) { + WebElement option = + driver.findElement( + By.xpath(".//*[@id='dropdown']/option[" + (i + 1) + "]")); + option.click(); + } + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/DuckDuckGoTest.java b/src/test/java/com/agile611/testng/webdriver/DuckDuckGoTest.java index ed6f1d1..15916e8 100644 --- a/src/test/java/com/agile611/testng/webdriver/DuckDuckGoTest.java +++ b/src/test/java/com/agile611/testng/webdriver/DuckDuckGoTest.java @@ -1,3 +1,19 @@ package com.agile611.testng.webdriver; +import com.agile611.testng.webdriver.pages.ResultsPage; +import com.agile611.testng.webdriver.pages.SearchPage; +import org.testng.annotations.*; + +import static org.testng.Assert.*; + +public class DuckDuckGoTest extends BaseSaucelabsTest { + @Test //El propio test que hemos exportado de Katalon IDE + public void testUntitledTestCase() throws Exception { + SearchPage searchPage = new SearchPage(driver); + searchPage.searchKeyword("pizza hawaiana"); + ResultsPage resultsPage = new ResultsPage(driver); + assertTrue(resultsPage.isResultsPagePresent()); + } +} + diff --git a/src/test/java/com/agile611/testng/webdriver/DynamicContentTest.java b/src/test/java/com/agile611/testng/webdriver/DynamicContentTest.java new file mode 100644 index 0000000..ec30e6c --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DynamicContentTest.java @@ -0,0 +1,34 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import static org.testng.AssertJUnit.assertFalse; + +public class DynamicContentTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("https://the-internet.herokuapp.com/dynamic_content"); + WebElement imatge1 = + driver.findElement( + By.xpath(".//*[@id='content']/div[3]/div[1]/img")); + WebElement text1 = + driver.findElement( + By.xpath(".//*[@id='content']/div[3]/div[2]")); + String urlImatge1 = imatge1.getAttribute("src"); + String texttotal1 = text1.getText(); + driver.navigate().refresh(); + imatge1 = + driver.findElement( + By.xpath(".//*[@id='content']/div[3]/div[1]/img")); + text1 = + driver.findElement( + By.xpath(".//*[@id='content']/div[3]/div[2]")); + String urlImatge2 = imatge1.getAttribute("src"); + String texttotal2 = text1.getText(); + assertFalse(urlImatge1.equals(urlImatge2)); + assertFalse(texttotal1.equals(texttotal2)); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/DynamicControlsTest.java b/src/test/java/com/agile611/testng/webdriver/DynamicControlsTest.java new file mode 100644 index 0000000..7f0e7f4 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/DynamicControlsTest.java @@ -0,0 +1,30 @@ +package com.agile611.testng.webdriver; + + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.annotations.Test; + +import java.util.List; + +import static org.testng.Assert.assertTrue; + +public class DynamicControlsTest extends BaseTest { + + @Test + public void titleTest() { + driver.navigate().to("http://the-internet.herokuapp.com/dynamic_controls"); + WebElement checkbox = driver.findElement(By.id("checkbox")); + assertTrue(checkbox.isDisplayed()); + checkbox.click(); + WebElement removeBtn = driver.findElement(By.xpath("//*[@id='checkbox-example']/button")); + removeBtn.click(); + List loading = driver.findElements(By.xpath("//*[@id='loading']/img")); + WebDriverWait wait = new WebDriverWait(driver, 20); + wait.until(ExpectedConditions.or( + ExpectedConditions.presenceOfElementLocated(By.id("loading")), + ExpectedConditions.presenceOfElementLocated(By.id("message")))); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/HoversTest.java b/src/test/java/com/agile611/testng/webdriver/HoversTest.java new file mode 100644 index 0000000..9f5888c --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/HoversTest.java @@ -0,0 +1,34 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.annotations.Test; + +import static net.bytebuddy.matcher.ElementMatchers.is; +import static org.junit.Assert.assertThat; +import static org.testng.Assert.assertTrue; + +public class HoversTest extends BaseTest { + + @Test + public void hoversTest() throws InterruptedException { + driver.get("http://the-internet.herokuapp.com/hovers"); + Thread.sleep(3000); + // Find and hover over desired element + WebElement avatar = driver.findElement(By.className("figure")); + Actions builder = new Actions(driver); + builder.moveToElement(avatar).build().perform(); + Thread.sleep(3000); + // Wait until the hover appears + WebDriverWait wait = new WebDriverWait(driver, 5); + wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("figcaption"))); + Thread.sleep(3000); + // Assert that the hover displayed + assertTrue(driver.findElement(By.className("figcaption")).isDisplayed()); + Thread.sleep(3000); + + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/InfiniteScrollTest.java b/src/test/java/com/agile611/testng/webdriver/InfiniteScrollTest.java new file mode 100644 index 0000000..110da09 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/InfiniteScrollTest.java @@ -0,0 +1,14 @@ +package com.agile611.testng.webdriver; + +import org.testng.annotations.Test; + +public class InfiniteScrollTest extends BaseTest { + @Test + public void infiniteScrollTest() throws InterruptedException { + driver.navigate().to("http://the-internet.herokuapp.com/infinite_scroll"); + for (int i = 0; i < 5; i++) { + jse.executeScript("window.scrollTo(0, document.body.scrollHeight);"); + Thread.sleep(2500); + } + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/InterrogationTest.java b/src/test/java/com/agile611/testng/webdriver/InterrogationTest.java new file mode 100644 index 0000000..3d2c8ae --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/InterrogationTest.java @@ -0,0 +1,20 @@ +package com.agile611.testng.webdriver; + +import org.testng.annotations.Test; + +public class InterrogationTest extends BaseSaucelabsTest { + @Test //Opciones de Navegación + public void testNavigation() throws Exception { + driver.get("https://www.duckduckgo.com/"); //Navegar hasta duckduckgo + System.out.println("---------------------"); + System.out.println(driver.getPageSource()); + System.out.println("---------------------"); + System.out.println(driver.getTitle()); + System.out.println("---------------------"); + System.out.println(driver.getCurrentUrl()); + System.out.println("---------------------"); + + } +} + + diff --git a/src/test/java/com/agile611/testng/webdriver/KeyboardKeysTest.java b/src/test/java/com/agile611/testng/webdriver/KeyboardKeysTest.java new file mode 100644 index 0000000..cac301b --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/KeyboardKeysTest.java @@ -0,0 +1,24 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.interactions.Actions; +import org.testng.annotations.Test; + +import static net.bytebuddy.matcher.ElementMatchers.is; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +public class KeyboardKeysTest extends BaseTest { + @Test + public void KeyboardKeysExample() throws InterruptedException { + driver.get("http://the-internet.herokuapp.com/key_presses"); + Actions builder = new Actions(driver); + builder.sendKeys(Keys.SPACE).build().perform(); + Thread.sleep(2000); + assertTrue(driver.findElement(By.id("result")).getText().equalsIgnoreCase("You entered: SPACE")); + builder.sendKeys(Keys.LEFT).build().perform(); + Thread.sleep(2000); + assertTrue(driver.findElement(By.id("result")).getText().equalsIgnoreCase("You entered: LEFT")); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/LargeDeepDomTest.java b/src/test/java/com/agile611/testng/webdriver/LargeDeepDomTest.java new file mode 100644 index 0000000..1db93b9 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/LargeDeepDomTest.java @@ -0,0 +1,41 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +public class LargeDeepDomTest extends BaseTest { + /** + * @param element element on the page that will be highlighted + * @param duration the time in second how much the element will be highlighted + */ + + private void highlightElement(WebElement element, int duration) throws InterruptedException { + // Store original style so it can be reset later + String original_style = element.getAttribute("style"); + + // Style element with a red border + jse.executeScript( + "arguments[0].setAttribute(arguments[1], arguments[2])", + element, + "style", + "border: 2px solid red; border-style: dashed;"); + + // Keep element highlighted for a spell and then revert + if (duration > 0) { + Thread.sleep(duration * 1000); + jse.executeScript( + "arguments[0].setAttribute(arguments[1], arguments[2])", + element, + "style", + original_style); + } + } + + @Test + public void highlightElementTest() throws InterruptedException { + driver.get("http://the-internet.herokuapp.com/large"); + WebElement element = driver.findElement(By.id("sibling-2.3")); + highlightElement(element, 3); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/ManipulationTest.java b/src/test/java/com/agile611/testng/webdriver/ManipulationTest.java new file mode 100644 index 0000000..6258e30 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/ManipulationTest.java @@ -0,0 +1,23 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.testng.annotations.Test; + +public class ManipulationTest extends BaseSaucelabsTest { + @Test //Opciones de Navegación + public void testNavigation() throws Exception { + driver.get("https://www.duckduckgo.com/"); //Navegar hasta duckduckgo + driver.findElement(By.id("search_form_input_homepage")).clear(); //Limpiar el text box + driver.findElement(By.id("search_form_input_homepage")).sendKeys("pizza hawaiana"); //Escribir en el text box + driver.findElement(By.id("search_form_homepage")).submit(); //Submit, darle al enter. + Thread.sleep(2000); //Espera forzada + + driver.get("https://www.duckduckgo.com/"); //Navegar hasta duckduckgo + driver.findElement(By.id("search_form_input_homepage")).clear(); //Limpiar el text box + driver.findElement(By.id("search_form_input_homepage")).sendKeys("tortellini al pesto"); //Escribir en el text box + driver.findElement(By.id("search_button_homepage")).click(); //click a la lupa. + Thread.sleep(2000); //Espera forzada + } +} + + diff --git a/src/test/java/com/agile611/testng/webdriver/MultipleWindowsTest.java b/src/test/java/com/agile611/testng/webdriver/MultipleWindowsTest.java new file mode 100644 index 0000000..3ff002b --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/MultipleWindowsTest.java @@ -0,0 +1,54 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.testng.annotations.Test; + +import java.util.Set; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.assertThat; + +public class MultipleWindowsTest extends BaseTest { + + @Test + public void multipleWindows() { + driver.get("http://the-internet.herokuapp.com/windows"); + driver.findElement(By.cssSelector(".example a")).click(); + Object[] allWindows = driver.getWindowHandles().toArray(); + driver.switchTo().window(allWindows[0].toString()); + assertThat(driver.getTitle(), is(not("New Window"))); + driver.switchTo().window(allWindows[1].toString()); + assertThat(driver.getTitle(), is("New Window")); + } + + @Test + public void multipleWindowsRedux() { + driver.get("http://the-internet.herokuapp.com/windows"); + + // Get initial window handle + String firstWindow = driver.getWindowHandle(); + // Create a newWindow variable + String newWindow = ""; + // Trigger new window to open + driver.findElement(By.cssSelector(".example a")).click(); + // Grab all window handles + Set allWindows = driver.getWindowHandles(); + + // Iterate through window handles collection + // Find the new window handle, storing it in the newWindow variable + for (String window : allWindows) { + if (!window.equals(firstWindow)) { + newWindow = window; + } + } + + // Switch to the first window & verify + driver.switchTo().window(firstWindow); + assertThat(driver.getTitle(), is(not(equalTo("New Window")))); + + // Switch to the new window & verify + driver.switchTo().window(newWindow); + assertThat(driver.getTitle(), is(equalTo("New Window"))); + } + +} diff --git a/src/test/java/com/agile611/testng/webdriver/NavigationTest.java b/src/test/java/com/agile611/testng/webdriver/NavigationTest.java new file mode 100644 index 0000000..7f525c8 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/NavigationTest.java @@ -0,0 +1,24 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.testng.annotations.Test; + +public class NavigationTest extends BaseSaucelabsTest { + @Test //Opciones de Navegación + public void testNavigation() throws Exception { + driver.get("https://www.duckduckgo.com/"); //Navegar hasta duckduckgo + Thread.sleep(2000); + driver.navigate().to("https://www.google.com"); //Navegar hasta Google + Thread.sleep(2000); + driver.get("https://www.yahoo.com"); //Navegar hasta Yahoo + Thread.sleep(2000); + driver.navigate().back(); //Hacia atrás (Volver a Google) + Thread.sleep(2000); + driver.navigate().forward(); //Hacia adelante (Volver a Yahoo) + Thread.sleep(2000); + driver.navigate().refresh(); //Refrescar Yahoo + Thread.sleep(2000); + } +} + + diff --git a/src/test/java/com/agile611/testng/webdriver/NestedFramesTest.java b/src/test/java/com/agile611/testng/webdriver/NestedFramesTest.java new file mode 100644 index 0000000..374f664 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/NestedFramesTest.java @@ -0,0 +1,32 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +import java.util.List; + +public class NestedFramesTest extends BaseTest { + + public void listIframesFromPage(WebDriver driver) { + final List iframes = driver.findElements(By.tagName("frame")); + for (WebElement iframe : iframes) { + System.out.println(iframe.getAttribute("id")); + System.out.println(iframe.getAttribute("name")); + } + } + + @Test + public void testApp() { + driver.navigate().to("https://the-internet.herokuapp.com/nested_frames"); + listIframesFromPage(driver); + driver.switchTo().frame("frame-bottom"); + System.out.println(driver.findElement(By.xpath("html/body")).getText()); + driver.switchTo().defaultContent(); + driver.switchTo().frame("frame-top"); + listIframesFromPage(driver); + driver.switchTo().frame("frame-middle"); + System.out.println(driver.findElement(By.xpath("html/body")).getText()); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/StatusCodesTest.java b/src/test/java/com/agile611/testng/webdriver/StatusCodesTest.java new file mode 100644 index 0000000..f2f71e5 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/StatusCodesTest.java @@ -0,0 +1,78 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.Proxy; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import net.lightbody.bmp.BrowserMobProxy; +import net.lightbody.bmp.BrowserMobProxyServer; +import net.lightbody.bmp.client.ClientUtil; +import net.lightbody.bmp.core.har.Har; +import net.lightbody.bmp.proxy.CaptureType; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.io.File; + +import static org.hamcrest.CoreMatchers.*; +import static org.junit.Assert.assertThat; + +public class StatusCodesTest { + WebDriver driver; + BrowserMobProxy proxy; + + @BeforeMethod + public void setUp() { + proxy = new BrowserMobProxyServer(); + proxy.start(0); + Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability(CapabilityType.PROXY, seleniumProxy); + System.setProperty("webdriver.gecko.driver", + "src" + File.separator + "main" + + File.separator + "resources" + + File.separator + "geckodriver-macos"); + driver = new FirefoxDriver(capabilities); + proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT); + } + + @AfterMethod + public void tearDown() { + proxy.stop(); + driver.quit(); + } + + @Test + public void ResourceNotFound404() { + proxy.newHar(); + driver.navigate().to("http://the-internet.herokuapp.com/status_codes/404"); + Har har = proxy.getHar(); + assertThat(har.getLog().getEntries().get(0).getResponse().getStatus(), is(404)); + } + + @Test + public void ResourceFound200() { + proxy.newHar(); + driver.navigate().to("http://the-internet.herokuapp.com/status_codes/200"); + Har har = proxy.getHar(); + assertThat(har.getLog().getEntries().get(0).getResponse().getStatus(), is(200)); + } + + @Test + public void ResourceRedirect301() { + proxy.newHar(); + driver.navigate().to("http://the-internet.herokuapp.com/status_codes/301"); + Har har = proxy.getHar(); + assertThat(har.getLog().getEntries().get(0).getResponse().getStatus(), is(301)); + } + + @Test + public void ResourceError500() { + proxy.newHar(); + driver.navigate().to("http://the-internet.herokuapp.com/status_codes/500"); + Har har = proxy.getHar(); + assertThat(har.getLog().getEntries().get(0).getResponse().getStatus(), is(500)); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/TestABTest.java b/src/test/java/com/agile611/testng/webdriver/TestABTest.java new file mode 100644 index 0000000..b0923b5 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/TestABTest.java @@ -0,0 +1,28 @@ +package com.agile611.testng.webdriver; + +import com.agile611.testng.webdriver.BaseTest; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.testng.annotations.Test; + +public class TestABTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + int counter1=0, counter2=0; + for(int i=0; i < 1000; i++){ + driver.get("https://the-internet.herokuapp.com/abtest"); + WebElement title = + driver.findElement(By.xpath(".//*[@id='content']/div/h3")); + if(title.getText().equals("A/B Test Variation 1")){ + counter1++; + } + else{ + counter2++; + } + driver.manage().deleteAllCookies(); + } + System.out.println("He recibido la version 1 "+counter1); + System.out.println("He recibido la version 2 "+counter2); + } +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/UploadTest.java b/src/test/java/com/agile611/testng/webdriver/UploadTest.java new file mode 100644 index 0000000..1d96157 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/UploadTest.java @@ -0,0 +1,30 @@ +package com.agile611.testng.webdriver; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.ExpectedConditions; +import org.openqa.selenium.support.ui.WebDriverWait; +import org.testng.annotations.Test; + +import java.io.File; + +import static org.testng.AssertJUnit.assertTrue; + +public class UploadTest extends BaseTest { + + @Test + public void testApp() throws InterruptedException { + driver.navigate().to("https://the-internet.herokuapp.com/upload"); + WebElement fileUpload = driver.findElement(By.id("file-upload")); + File file = new File("src" + File.separator + "main" + + File.separator + "resources" + File.separator + "2-logo-B_activa.png"); + fileUpload.sendKeys(file.getAbsolutePath()); + WebElement buttonUpload = driver.findElement(By.id("file-submit")); + buttonUpload.click(); + WebElement uploadedFiles = driver.findElement(By.id("uploaded-files")); + WebDriverWait wait = new WebDriverWait(driver, 20); + wait.until(ExpectedConditions.visibilityOf(uploadedFiles)); + assertTrue(uploadedFiles.isDisplayed()); + } + +} \ No newline at end of file diff --git a/src/test/java/com/agile611/testng/webdriver/pages/ResultsPage.java b/src/test/java/com/agile611/testng/webdriver/pages/ResultsPage.java new file mode 100644 index 0000000..9dfd64c --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/pages/ResultsPage.java @@ -0,0 +1,23 @@ +package com.agile611.testng.webdriver.pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; + +public class ResultsPage { + + private WebDriver driver; + + @FindBy(id = "links_wrapper") + public WebElement resultsList; + + + public ResultsPage(WebDriver driver) { + PageFactory.initElements(driver, this); + } + + public boolean isResultsPagePresent() { + return resultsList.isDisplayed(); + } +} diff --git a/src/test/java/com/agile611/testng/webdriver/pages/SearchPage.java b/src/test/java/com/agile611/testng/webdriver/pages/SearchPage.java new file mode 100644 index 0000000..8612915 --- /dev/null +++ b/src/test/java/com/agile611/testng/webdriver/pages/SearchPage.java @@ -0,0 +1,30 @@ +package com.agile611.testng.webdriver.pages; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; + +public class SearchPage { + + private WebDriver driver; + + @FindBy(id = "search_form_input_homepage") + public WebElement searchBox; + + + @FindBy(id = "search_button_homepage") + public WebElement searchButton; + + + public SearchPage(WebDriver driver) { + PageFactory.initElements(driver, this); + driver.get("https://duckduckgo.com/"); + } + + public void searchKeyword(String keyword) { + searchBox.clear(); + searchBox.sendKeys(keyword); + searchButton.click(); + } +} -- 2.49.1 From 3afc442338a2c907826f7212144b29a0398ca6cd Mon Sep 17 00:00:00 2001 From: Guillem Hernandez Sola Date: Tue, 30 Jun 2020 19:42:21 +0200 Subject: [PATCH 2/2] Cambio requisite a requisito --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c2f1f6..9a73e19 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Código del curso de Selenium WebDriver de [Agile611](https://www.agile611.com) -## Pre-requisite: +## Pre-requisitos: 1. MacOS, Linux o Windows 2. [Java](https://www.oracle.com/technetwork/java/javase/downloads/index.html) 3. [Maven](https://maven.apache.org/download.cgi) -- 2.49.1