├── README.md
└── webdriver_java
├── pom.xml
└── src
├── main
└── java
│ ├── pages
│ ├── AlertsPage.java
│ ├── ContextMenuPage.java
│ ├── DropdownPage.java
│ ├── DynamicLoadingExample1Page.java
│ ├── DynamicLoadingExample2Page.java
│ ├── DynamicLoadingPage.java
│ ├── EmailSentPage.java
│ ├── FileUploadPage.java
│ ├── ForgotPasswordPage.java
│ ├── FramesPage.java
│ ├── HomePage.java
│ ├── HorizontalSliderPage.java
│ ├── HoversPage.java
│ ├── InfiniteScrollPage.java
│ ├── KeyPressesPage.java
│ ├── LargeAndDeepDomPage.java
│ ├── LoginPage.java
│ ├── MultipleWindowsPage.java
│ ├── NestedFramesPage.java
│ ├── SecureAreaPage.java
│ └── WysiwygEditorPage.java
│ └── utils
│ ├── CookieManager.java
│ ├── EventReporter.java
│ └── WindowManager.java
└── test
└── java
├── alerts
├── AlertTests.java
└── FileUploadTests.java
├── base
└── BaseTests.java
├── dropdown
└── DropdownTests.java
├── exercises
├── chapter10
│ └── javascript
│ │ └── JavaScriptTests.java
├── chapter11
│ └── windows
│ │ └── WindowTests.java
├── chapter14
│ └── cookies
│ │ └── CookiesTests.java
├── chapter3
│ └── menu
│ │ └── MenuCount.java
├── chapter4
│ └── passwords
│ │ └── ForgotPasswordTests.java
├── chapter6
│ └── slider
│ │ └── SliderTests.java
├── chapter7
│ └── contextmenu
│ │ └── ContextMenuTests.java
├── chapter8
│ └── frames
│ │ └── FrameTests.java
└── chapter9
│ └── wait
│ └── WaitTests.java
├── frames
└── FrameTests.java
├── hover
└── HoverTests.java
├── javascript
└── JavaScriptTests.java
├── keys
└── KeysTests.java
├── login
└── LoginTests.java
├── navigation
└── NavigationTests.java
└── wait
└── WaitTests.java
/README.md:
--------------------------------------------------------------------------------
1 | # Free Selenium Webdriver Tutorial
2 | Source code for my [free Selenium WebDriver for Java tutorial](https://testautomationu.applitools.com/selenium-webdriver-tutorial-java/) on Test Automation University. This course covers beginner to advanced topics in Selenium WebDriver.
3 |
4 |
--------------------------------------------------------------------------------
/webdriver_java/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | testautomationu
8 | webdriver_java
9 | 1.0-SNAPSHOT
10 |
11 |
12 | 1.12
13 | 1.12
14 |
15 |
16 |
17 |
18 | org.seleniumhq.selenium
19 | selenium-chrome-driver
20 | 3.141.59
21 |
22 |
23 |
24 | org.seleniumhq.selenium
25 | selenium-support
26 | 3.141.59
27 |
28 |
29 |
30 |
31 | org.testng
32 | testng
33 | 6.14.3
34 | test
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/AlertsPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class AlertsPage {
7 |
8 | private WebDriver driver;
9 | private By triggerAlertButton = By.xpath(".//button[text()='Click for JS Alert']");
10 | private By triggerConfirmButton = By.xpath(".//button[text()='Click for JS Confirm']");
11 | private By triggerPromptButton = By.xpath(".//button[text()='Click for JS Prompt']");
12 |
13 | private By results = By.id("result");
14 |
15 | public AlertsPage(WebDriver driver){
16 | this.driver = driver;
17 | }
18 |
19 | public void triggerAlert(){
20 | driver.findElement(triggerAlertButton).click();
21 | }
22 |
23 | public void triggerConfirm(){
24 | driver.findElement(triggerConfirmButton).click();
25 | }
26 |
27 | public void triggerPrompt(){
28 | driver.findElement(triggerPromptButton).click();
29 | }
30 |
31 | public void alert_clickToAccept(){
32 | driver.switchTo().alert().accept();
33 | }
34 |
35 | public void alert_clickToDismiss(){
36 | driver.switchTo().alert().dismiss();
37 | }
38 |
39 | public String alert_getText(){
40 | return driver.switchTo().alert().getText();
41 | }
42 |
43 | public void alert_setInput(String text){
44 | driver.switchTo().alert().sendKeys(text);
45 | }
46 |
47 | public String getResult(){
48 | return driver.findElement(results).getText();
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/ContextMenuPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 | import org.openqa.selenium.interactions.Actions;
6 |
7 | public class ContextMenuPage {
8 |
9 | private WebDriver driver;
10 | private By box = By.id("hot-spot");
11 |
12 | public ContextMenuPage(WebDriver driver){
13 | this.driver = driver;
14 | }
15 |
16 | public void rightClickInBox(){
17 | Actions actions = new Actions(driver);
18 | actions.contextClick(driver.findElement(box)).perform();
19 | }
20 |
21 | public String getPopUpText(){
22 | return driver.switchTo().alert().getText();
23 | }
24 |
25 | public void acceptPopUp(){
26 | driver.switchTo().alert().accept();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/DropdownPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.JavascriptExecutor;
5 | import org.openqa.selenium.WebDriver;
6 | import org.openqa.selenium.WebElement;
7 | import org.openqa.selenium.support.ui.Select;
8 |
9 | import java.util.List;
10 | import java.util.stream.Collectors;
11 |
12 | public class DropdownPage {
13 |
14 | private WebDriver driver;
15 | private By dropdown = By.id("dropdown");
16 |
17 | public DropdownPage(WebDriver driver){
18 | this.driver = driver;
19 | }
20 |
21 | public void selectFromDropDown(String option){
22 | findDropDownElement().selectByVisibleText(option);
23 | }
24 |
25 | public List getSelectedOptions(){
26 | List selectedElements = findDropDownElement().getAllSelectedOptions();
27 | return selectedElements.stream().map(e->e.getText()).collect(Collectors.toList());
28 | }
29 |
30 | public void addMultipleAttribute(){
31 | String script = "arguments[0].setAttribute('multiple','')";
32 | ((JavascriptExecutor)driver).executeScript(script, findDropDownElement());
33 | }
34 |
35 | private Select findDropDownElement(){
36 | return new Select(driver.findElement(dropdown));
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/DynamicLoadingExample1Page.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.NoSuchElementException;
5 | import org.openqa.selenium.WebDriver;
6 | import org.openqa.selenium.support.ui.ExpectedConditions;
7 | import org.openqa.selenium.support.ui.FluentWait;
8 | import org.openqa.selenium.support.ui.WebDriverWait;
9 |
10 | import java.time.Duration;
11 |
12 | public class DynamicLoadingExample1Page {
13 |
14 | private WebDriver driver;
15 | private By startButton = By.cssSelector("#start button");
16 | private By loadingIndicator = By.id("loading");
17 | private By loadedText = By.id("finish");
18 |
19 | public DynamicLoadingExample1Page(WebDriver driver){
20 | this.driver = driver;
21 | }
22 |
23 | public void clickStart(){
24 | driver.findElement(startButton).click();
25 | WebDriverWait wait = new WebDriverWait(driver, 5);
26 | wait.until(ExpectedConditions.invisibilityOf(
27 | driver.findElement(loadingIndicator)));
28 |
29 | /* FLUENT WAIT */
30 | // FluentWait wait = new FluentWait(driver)
31 | // .withTimeout(Duration.ofSeconds(5))
32 | // .pollingEvery(Duration.ofSeconds(1))
33 | // .ignoring(NoSuchElementException.class);
34 | // wait.until(ExpectedConditions.invisibilityOf(
35 | // driver.findElement(loadingIndicator)));
36 |
37 | }
38 |
39 | public String getLoadedText(){
40 | return driver.findElement(loadedText).getText();
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/DynamicLoadingExample2Page.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 | import org.openqa.selenium.support.ui.ExpectedConditions;
6 | import org.openqa.selenium.support.ui.WebDriverWait;
7 |
8 | public class DynamicLoadingExample2Page {
9 |
10 | private WebDriver driver;
11 | private By startButton = By.cssSelector("#start button");
12 | private By loadedText = By.id("finish");
13 |
14 | public DynamicLoadingExample2Page(WebDriver driver){
15 | this.driver = driver;
16 | }
17 |
18 | public void clickStart() {
19 | driver.findElement(startButton).click();
20 | WebDriverWait wait = new WebDriverWait(driver, 5);
21 | wait.until(ExpectedConditions.presenceOfElementLocated(loadedText));
22 | }
23 |
24 | public boolean isStartButtonDisplayed(){
25 | return driver.findElement(startButton).isDisplayed();
26 | }
27 |
28 | public String getLoadedText(){
29 | return driver.findElement(loadedText).getText();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/DynamicLoadingPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.Keys;
5 | import org.openqa.selenium.WebDriver;
6 | import org.openqa.selenium.interactions.Actions;
7 |
8 | public class DynamicLoadingPage {
9 |
10 | private WebDriver driver;
11 | private String linkXpath_Format = ".//a[contains(text(), '%s')]";
12 | private By link_Example1 = By.xpath(String.format(linkXpath_Format, "Example 1"));
13 | private By link_Example2 = By.xpath(String.format(linkXpath_Format, "Example 2"));
14 |
15 | public DynamicLoadingPage(WebDriver driver){
16 | this.driver = driver;
17 | }
18 |
19 | public DynamicLoadingExample1Page clickExample1(){
20 | driver.findElement(link_Example1).click();
21 | return new DynamicLoadingExample1Page(driver);
22 | }
23 |
24 | public DynamicLoadingExample2Page clickExample2(){
25 | driver.findElement(link_Example2).click();
26 | return new DynamicLoadingExample2Page(driver);
27 | }
28 |
29 | public DynamicLoadingExample2Page rightClickOnExample2Link(){
30 | driver.findElement(link_Example2).sendKeys(Keys.CONTROL, Keys.RETURN);
31 | return new DynamicLoadingExample2Page(driver);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/EmailSentPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class EmailSentPage {
7 |
8 | private WebDriver driver;
9 | private By contentArea = By.id("content");
10 |
11 | public EmailSentPage(WebDriver driver){
12 | this.driver = driver;
13 | }
14 |
15 | public String getMessage(){
16 | return driver.findElement(contentArea).getText();
17 | }
18 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/FileUploadPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class FileUploadPage {
7 |
8 | private WebDriver driver;
9 | private By inputField = By.id("file-upload");
10 | private By uploadButton = By.id("file-submit");
11 | private By uploadedFiles = By.id("uploaded-files");
12 |
13 | public FileUploadPage(WebDriver driver){
14 | this.driver = driver;
15 | }
16 |
17 | public void clickUploadButton(){
18 | driver.findElement(uploadButton).click();
19 | }
20 |
21 | /**
22 | * Provides path of file to the form then clicks Upload button
23 | * @param absolutePathOfFile The complete path of the file to upload
24 | */
25 | public void uploadFile(String absolutePathOfFile){
26 | driver.findElement(inputField).sendKeys(absolutePathOfFile);
27 | clickUploadButton();
28 | }
29 |
30 | public String getUploadedFiles(){
31 | return driver.findElement(uploadedFiles).getText();
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/ForgotPasswordPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class ForgotPasswordPage {
7 |
8 | private WebDriver driver;
9 | private By emailField = By.id("email");
10 | private By retrievePasswordButton = By.id("form_submit");
11 |
12 | public ForgotPasswordPage(WebDriver driver){
13 | this.driver = driver;
14 | }
15 |
16 | public void enterEmail(String email){
17 | driver.findElement(emailField).sendKeys(email);
18 | }
19 |
20 | public EmailSentPage clickRetrievePassword(){
21 | driver.findElement(retrievePasswordButton).click();
22 | return new EmailSentPage(driver);
23 | }
24 |
25 | public EmailSentPage retrievePassword(String email){
26 | enterEmail(email);
27 | return clickRetrievePassword();
28 | }
29 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/FramesPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 |
7 | public class FramesPage {
8 |
9 | private WebDriver driver;
10 |
11 | public FramesPage(WebDriver driver){
12 | this.driver = driver;
13 | }
14 |
15 | public NestedFramesPage clickNestedFrames(){
16 | driver.findElement(By.linkText("Nested Frames")).click();
17 | return new NestedFramesPage(driver);
18 | }
19 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/HomePage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class HomePage {
7 |
8 | private WebDriver driver;
9 |
10 | public HomePage(WebDriver driver){
11 | this.driver = driver;
12 | }
13 |
14 | public LoginPage clickFormAuthentication(){
15 | clickLink("Form Authentication");
16 | return new LoginPage(driver);
17 | }
18 |
19 | public DropdownPage clickDropDown(){
20 | clickLink("Dropdown");
21 | return new DropdownPage(driver);
22 | }
23 |
24 | public HoversPage clickHovers(){
25 | clickLink("Hovers");
26 | return new HoversPage(driver);
27 | }
28 |
29 | public KeyPressesPage clickKeyPresses(){
30 | clickLink("Key Presses");
31 | return new KeyPressesPage(driver);
32 | }
33 |
34 | public AlertsPage clickJavaScriptAlerts(){
35 | clickLink("JavaScript Alerts");
36 | return new AlertsPage(driver);
37 | }
38 |
39 | public FileUploadPage clickFileUpload(){
40 | clickLink("File Upload");
41 | return new FileUploadPage(driver);
42 | }
43 |
44 | public WysiwygEditorPage clickWysiwygEditor(){
45 | clickLink("WYSIWYG Editor");
46 | return new WysiwygEditorPage(driver);
47 | }
48 |
49 | public LargeAndDeepDomPage clickLargeAndDeepDom(){
50 | clickLink("Large & Deep DOM");
51 | return new LargeAndDeepDomPage(driver);
52 | }
53 |
54 | public InfiniteScrollPage clickInfiniteScroll(){
55 | clickLink("Infinite Scroll");
56 | return new InfiniteScrollPage(driver);
57 | }
58 |
59 | public DynamicLoadingPage clickDynamicLoading(){
60 | clickLink("Dynamic Loading");
61 | return new DynamicLoadingPage(driver);
62 | }
63 |
64 | public MultipleWindowsPage clickMultipleWindows(){
65 | clickLink("Multiple Windows");
66 | return new MultipleWindowsPage(driver);
67 | }
68 |
69 | private void clickLink(String linkText){
70 | driver.findElement(By.linkText(linkText)).click();
71 | }
72 |
73 | /*=====================================
74 | METHODS FOR INDIVIDUAL EXERCISES
75 | ======================================*/
76 |
77 | public ForgotPasswordPage clickForgotPassword(){
78 | clickLink("Forgot Password");
79 | return new ForgotPasswordPage(driver);
80 | }
81 |
82 | public HorizontalSliderPage clickHorizonalSlider(){
83 | clickLink("Horizontal Slider");
84 | return new HorizontalSliderPage(driver);
85 | }
86 |
87 | public ContextMenuPage clickContextMenu(){
88 | clickLink("Context Menu");
89 | return new ContextMenuPage(driver);
90 | }
91 |
92 | public FramesPage clickFramesPage(){
93 | clickLink("Frames");
94 | return new FramesPage(driver);
95 | }
96 |
97 |
98 |
99 |
100 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/HorizontalSliderPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.Keys;
5 | import org.openqa.selenium.WebDriver;
6 |
7 | public class HorizontalSliderPage {
8 |
9 | private WebDriver driver;
10 | private By sliderValue = By.id("range");
11 | private By slider = By.cssSelector(".sliderContainer input");
12 |
13 | public HorizontalSliderPage(WebDriver driver){
14 | this.driver = driver;
15 | }
16 |
17 | public void setSliderValue(String value){
18 | while(!getSliderValue().equals(value)){
19 | driver.findElement(slider).sendKeys(Keys.ARROW_RIGHT);
20 | }
21 | }
22 |
23 | public String getSliderValue(){
24 | return driver.findElement(sliderValue).getText();
25 | }
26 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/HoversPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 | import org.openqa.selenium.WebElement;
6 | import org.openqa.selenium.interactions.Actions;
7 |
8 | public class HoversPage {
9 | private WebDriver driver;
10 |
11 | private By figureBox = By.className("figure");
12 | private By boxCaption = By.className("figcaption");
13 |
14 | public HoversPage(WebDriver driver){
15 | this.driver = driver;
16 | }
17 |
18 | /**
19 | * @param index starts at 1
20 | */
21 | public FigureCaption hoverOverFigure(int index){
22 | WebElement figure = driver.findElements(figureBox).get(index - 1);
23 |
24 | Actions actions = new Actions(driver);
25 | actions.moveToElement(figure).perform();
26 |
27 | return new FigureCaption(figure.findElement(boxCaption));
28 | }
29 |
30 | public class FigureCaption{
31 |
32 | private WebElement caption;
33 | private By header = By.tagName("h5");
34 | private By link = By.tagName("a");
35 |
36 | public FigureCaption(WebElement caption){
37 | this.caption = caption;
38 | }
39 |
40 | public boolean isCaptionDisplayed(){
41 | return caption.isDisplayed();
42 | }
43 |
44 | public String getTitle(){
45 | return caption.findElement(header).getText();
46 | }
47 |
48 | public String getLink(){
49 | return caption.findElement(link).getAttribute("href");
50 | }
51 |
52 | public String getLinkText(){
53 | return caption.findElement(link).getText();
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/InfiniteScrollPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.JavascriptExecutor;
5 | import org.openqa.selenium.WebDriver;
6 |
7 | public class InfiniteScrollPage {
8 |
9 | private WebDriver driver;
10 | By textBlocks = By.className("jscroll-added");
11 |
12 | public InfiniteScrollPage(WebDriver driver){
13 | this.driver = driver;
14 | }
15 |
16 | /**
17 | * Scrolls until paragraph with index specified is in view
18 | * @param index 1-based
19 | */
20 | public void scrollToParagraph(int index){
21 | String script = "window.scrollTo(0, document.body.scrollHeight)";
22 | var jsExecutor = (JavascriptExecutor)driver;
23 |
24 | while(getNumberOfParagraphsPresent() < index){
25 | jsExecutor.executeScript(script);
26 | }
27 | }
28 |
29 | private int getNumberOfParagraphsPresent(){
30 | return driver.findElements(textBlocks).size();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/KeyPressesPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.Keys;
5 | import org.openqa.selenium.WebDriver;
6 |
7 | public class KeyPressesPage {
8 |
9 | private WebDriver driver;
10 | private By inputField = By.id("target");
11 | private By resultText = By.id("result");
12 |
13 | public KeyPressesPage(WebDriver driver){
14 | this.driver = driver;
15 | }
16 |
17 | public void enterText(String text){
18 | driver.findElement(inputField).sendKeys(text);
19 | }
20 |
21 | public void enterPi(){
22 | enterText(Keys.chord(Keys.ALT, "p") + "=3.14");
23 | }
24 |
25 | public String getResult(){
26 | return driver.findElement(resultText).getText();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/LargeAndDeepDomPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.JavascriptExecutor;
5 | import org.openqa.selenium.WebDriver;
6 | import org.openqa.selenium.WebElement;
7 |
8 | public class LargeAndDeepDomPage {
9 |
10 | private WebDriver driver;
11 | private By table = By.id("large-table");
12 |
13 | public LargeAndDeepDomPage(WebDriver driver){
14 | this.driver = driver;
15 | }
16 |
17 | public void scrollToTable(){
18 | WebElement tableElement = driver.findElement(table);
19 | String script = "arguments[0].scrollIntoView();";
20 | ((JavascriptExecutor)driver).executeScript(script, tableElement);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/LoginPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class LoginPage {
7 |
8 | private WebDriver driver;
9 | private By usernameField = By.id("username");
10 | private By passwordField = By.id("password");
11 | private By loginButton = By.cssSelector("#login button");
12 |
13 | public LoginPage(WebDriver driver){
14 | this.driver = driver;
15 | }
16 |
17 | public void setUsername(String username){
18 | driver.findElement(usernameField).sendKeys(username);
19 | }
20 |
21 | public void setPassword(String password){
22 | driver.findElement(passwordField).sendKeys(password);
23 | }
24 |
25 | public SecureAreaPage clickLoginButton(){
26 | driver.findElement(loginButton).click();
27 | return new SecureAreaPage(driver);
28 | }
29 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/MultipleWindowsPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class MultipleWindowsPage {
7 |
8 | private WebDriver driver;
9 | private By clickHereLink = By.linkText("Click Here");
10 |
11 | public MultipleWindowsPage(WebDriver driver){
12 | this.driver = driver;
13 | }
14 |
15 | public void clickHere(){
16 | driver.findElement(clickHereLink).click();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/NestedFramesPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class NestedFramesPage {
7 |
8 | private WebDriver driver;
9 | private String topFrame = "frame-top";
10 | private String leftFrame = "frame-left";
11 | private String bottomFrame = "frame-bottom";
12 | private By body = By.tagName("body");
13 |
14 | public NestedFramesPage(WebDriver driver){
15 | this.driver = driver;
16 | }
17 |
18 | public String getLeftFrameText(){
19 | driver.switchTo().frame(topFrame);
20 | driver.switchTo().frame(leftFrame);
21 | String text = getFrameText();
22 | driver.switchTo().parentFrame(); //exit left to top
23 | driver.switchTo().parentFrame(); //exit top to main
24 | return text;
25 | }
26 |
27 | public String getBottomFrameText(){
28 | driver.switchTo().frame(bottomFrame);
29 | String text = getFrameText();
30 | driver.switchTo().parentFrame(); //exit top to main
31 | return text;
32 | }
33 |
34 | private String getFrameText(){
35 | return driver.findElement(body).getText();
36 | }
37 | }
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/SecureAreaPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class SecureAreaPage {
7 |
8 | private WebDriver driver;
9 | private By statusAlert = By.id("flash");
10 |
11 | public SecureAreaPage(WebDriver driver){
12 | this.driver = driver;
13 | }
14 |
15 | public String getAlertText(){
16 | return driver.findElement(statusAlert).getText();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/pages/WysiwygEditorPage.java:
--------------------------------------------------------------------------------
1 | package pages;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class WysiwygEditorPage {
7 |
8 | private WebDriver driver;
9 | private String editorIframeId = "mce_0_ifr";
10 | private By textArea = By.id("tinymce");
11 | private By decreaseIndentButton = By.cssSelector("button[title='Increase indent']");
12 |
13 | public WysiwygEditorPage(WebDriver driver){
14 | this.driver = driver;
15 | }
16 |
17 | public void clearTextArea(){
18 | switchToEditArea();
19 | driver.findElement(textArea).clear();
20 | switchToMainArea();
21 | }
22 |
23 | public void setTextArea(String text){
24 | switchToEditArea();
25 | driver.findElement(textArea).sendKeys(text);
26 | switchToMainArea();
27 | }
28 |
29 | public String getTextFromEditor(){
30 | switchToEditArea();
31 | String text = driver.findElement(textArea).getText();
32 | switchToMainArea();
33 | return text;
34 | }
35 |
36 | public void decreaseIndention(){
37 | driver.findElement(decreaseIndentButton).click();
38 | }
39 |
40 | private void switchToEditArea(){
41 | driver.switchTo().frame(editorIframeId);
42 | }
43 |
44 | private void switchToMainArea(){
45 | driver.switchTo().parentFrame();
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/utils/CookieManager.java:
--------------------------------------------------------------------------------
1 | package utils;
2 |
3 | import org.openqa.selenium.Cookie;
4 | import org.openqa.selenium.WebDriver;
5 |
6 | public class CookieManager {
7 |
8 | private WebDriver driver;
9 |
10 | public CookieManager(WebDriver driver){
11 | this.driver = driver;
12 | }
13 |
14 | public void addCookie(Cookie cookie){
15 | driver.manage().addCookie(cookie);
16 | }
17 |
18 | public void deleteCookie(Cookie cookie){
19 | driver.manage().deleteCookie(cookie);
20 | }
21 |
22 | public boolean isCookiePresent(Cookie cookie){
23 | return driver.manage().getCookieNamed(cookie.getName()) != null;
24 | }
25 |
26 | public Cookie buildCookie(String name, String value){
27 | Cookie cookie = new Cookie.Builder(name, value)
28 | .domain("the-internet.herokuapp.com")
29 | .build();
30 | return cookie;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/utils/EventReporter.java:
--------------------------------------------------------------------------------
1 | package utils;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.OutputType;
5 | import org.openqa.selenium.WebDriver;
6 | import org.openqa.selenium.WebElement;
7 | import org.openqa.selenium.support.events.WebDriverEventListener;
8 |
9 | public class EventReporter implements WebDriverEventListener {
10 | @Override
11 | public void beforeAlertAccept(WebDriver webDriver) {
12 |
13 | }
14 |
15 | @Override
16 | public void afterAlertAccept(WebDriver webDriver) {
17 |
18 | }
19 |
20 | @Override
21 | public void afterAlertDismiss(WebDriver webDriver) {
22 |
23 | }
24 |
25 | @Override
26 | public void beforeAlertDismiss(WebDriver webDriver) {
27 |
28 | }
29 |
30 | @Override
31 | public void beforeNavigateTo(String s, WebDriver webDriver) {
32 |
33 | }
34 |
35 | @Override
36 | public void afterNavigateTo(String s, WebDriver webDriver) {
37 |
38 | }
39 |
40 | @Override
41 | public void beforeNavigateBack(WebDriver webDriver) {
42 |
43 | }
44 |
45 | @Override
46 | public void afterNavigateBack(WebDriver webDriver) {
47 |
48 | }
49 |
50 | @Override
51 | public void beforeNavigateForward(WebDriver webDriver) {
52 |
53 | }
54 |
55 | @Override
56 | public void afterNavigateForward(WebDriver webDriver) {
57 |
58 | }
59 |
60 | @Override
61 | public void beforeNavigateRefresh(WebDriver webDriver) {
62 |
63 | }
64 |
65 | @Override
66 | public void afterNavigateRefresh(WebDriver webDriver) {
67 |
68 | }
69 |
70 | @Override
71 | public void beforeFindBy(By by, WebElement webElement, WebDriver webDriver) {
72 |
73 | }
74 |
75 | @Override
76 | public void afterFindBy(By by, WebElement webElement, WebDriver webDriver) {
77 |
78 | }
79 |
80 | @Override
81 | public void beforeClickOn(WebElement webElement, WebDriver webDriver) {
82 | System.out.println("Clicking on " + webElement.getText());
83 | }
84 |
85 | @Override
86 | public void afterClickOn(WebElement webElement, WebDriver webDriver) {
87 |
88 | }
89 |
90 | @Override
91 | public void beforeChangeValueOf(WebElement webElement, WebDriver webDriver, CharSequence[] charSequences) {
92 |
93 | }
94 |
95 | @Override
96 | public void afterChangeValueOf(WebElement webElement, WebDriver webDriver, CharSequence[] charSequences) {
97 |
98 | }
99 |
100 | @Override
101 | public void beforeScript(String s, WebDriver webDriver) {
102 |
103 | }
104 |
105 | @Override
106 | public void afterScript(String s, WebDriver webDriver) {
107 |
108 | }
109 |
110 | @Override
111 | public void beforeSwitchToWindow(String s, WebDriver webDriver) {
112 |
113 | }
114 |
115 | @Override
116 | public void afterSwitchToWindow(String s, WebDriver webDriver) {
117 |
118 | }
119 |
120 | @Override
121 | public void onException(Throwable throwable, WebDriver webDriver) {
122 |
123 | }
124 |
125 | @Override
126 | public void beforeGetScreenshotAs(OutputType outputType) {
127 |
128 | }
129 |
130 | @Override
131 | public void afterGetScreenshotAs(OutputType outputType, X x) {
132 |
133 | }
134 |
135 | @Override
136 | public void beforeGetText(WebElement webElement, WebDriver webDriver) {
137 |
138 | }
139 |
140 | @Override
141 | public void afterGetText(WebElement webElement, WebDriver webDriver, String s) {
142 |
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/webdriver_java/src/main/java/utils/WindowManager.java:
--------------------------------------------------------------------------------
1 | package utils;
2 |
3 | import org.openqa.selenium.WebDriver;
4 |
5 | public class WindowManager {
6 |
7 | private WebDriver driver;
8 | private WebDriver.Navigation navigate;
9 |
10 | public WindowManager(WebDriver driver){
11 | this.driver = driver;
12 | navigate = driver.navigate();
13 | }
14 |
15 | public void goBack(){
16 | navigate.back();
17 | }
18 |
19 | public void goForward(){
20 | navigate.forward();
21 | }
22 |
23 | public void refreshPage(){
24 | navigate.refresh();
25 | }
26 |
27 | public void goTo(String url){
28 | navigate.to(url);
29 | }
30 |
31 | public void switchToTab(String tabTitle){
32 | var windows = driver.getWindowHandles();
33 |
34 | System.out.println("Number of tabs: " + windows.size());
35 |
36 | System.out.println("Window handles:");
37 | windows.forEach(System.out::println);
38 |
39 | for(String window : windows){
40 | System.out.println("Switching to window: " + window);
41 | driver.switchTo().window(window);
42 |
43 | System.out.println("Current window title: " + driver.getTitle());
44 |
45 | if(tabTitle.equals(driver.getTitle())){
46 | break;
47 | }
48 | }
49 | }
50 | public void switchToNewTab(){
51 | var windows = driver.getWindowHandles();
52 | windows.forEach(driver.switchTo()::window);
53 | }
54 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/alerts/AlertTests.java:
--------------------------------------------------------------------------------
1 | package alerts;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class AlertTests extends BaseTests {
9 |
10 | @Test
11 | public void testAcceptAlert(){
12 | var alertsPage = homePage.clickJavaScriptAlerts();
13 | alertsPage.triggerAlert();
14 | alertsPage.alert_clickToAccept();
15 | assertEquals(alertsPage.getResult(), "You successfuly clicked an alert", "Results text incorrect");
16 | }
17 |
18 | @Test
19 | public void testGetTextFromAlert(){
20 | var alertsPage = homePage.clickJavaScriptAlerts();
21 | alertsPage.triggerConfirm();
22 | String text = alertsPage.alert_getText();
23 | alertsPage.alert_clickToDismiss();
24 | assertEquals(text, "I am a JS Confirm", "Alert text incorrect");
25 | }
26 |
27 | @Test
28 | public void testSetInputInAlert(){
29 | var alertsPage = homePage.clickJavaScriptAlerts();
30 | alertsPage.triggerPrompt();
31 |
32 | String text = "TAU rocks!";
33 | alertsPage.alert_setInput(text);
34 | alertsPage.alert_clickToAccept();
35 | assertEquals(alertsPage.getResult(), "You entered: " + text, "Results text incorrect");
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/alerts/FileUploadTests.java:
--------------------------------------------------------------------------------
1 | package alerts;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class FileUploadTests extends BaseTests {
9 |
10 | @Test
11 | public void testFileUpload(){
12 | var uploadPage = homePage.clickFileUpload();
13 | uploadPage.uploadFile("/Users/angie/workspace/test_automation_u/webdriver_java/resources/chromedriver");
14 | assertEquals(uploadPage.getUploadedFiles(), "chromedriver", "Uploaded files incorrect");
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/base/BaseTests.java:
--------------------------------------------------------------------------------
1 | package base;
2 |
3 | import com.google.common.io.Files;
4 | import org.openqa.selenium.*;
5 | import org.openqa.selenium.chrome.ChromeDriver;
6 | import org.openqa.selenium.chrome.ChromeOptions;
7 | import org.openqa.selenium.support.events.EventFiringWebDriver;
8 | import org.testng.ITestResult;
9 | import org.testng.annotations.*;
10 | import pages.HomePage;
11 | import utils.CookieManager;
12 | import utils.EventReporter;
13 | import utils.WindowManager;
14 |
15 | import java.io.File;
16 | import java.io.IOException;
17 |
18 | public class BaseTests {
19 |
20 | private EventFiringWebDriver driver;
21 | protected HomePage homePage;
22 |
23 | @BeforeClass
24 | public void setUp(){
25 | System.setProperty("webdriver.chrome.driver", "resources/chromedriver");
26 | driver = new EventFiringWebDriver(new ChromeDriver(getChromeOptions()));
27 | driver.register(new EventReporter());
28 | }
29 |
30 | @BeforeMethod
31 | public void goHome(){
32 | driver.get("https://the-internet.herokuapp.com/");
33 | homePage = new HomePage(driver);
34 | }
35 |
36 | @AfterClass
37 | public void tearDown(){
38 | driver.quit();
39 | }
40 |
41 | @AfterMethod
42 | public void recordFailure(ITestResult result){
43 | if(ITestResult.FAILURE == result.getStatus())
44 | {
45 | var camera = (TakesScreenshot)driver;
46 | File screenshot = camera.getScreenshotAs(OutputType.FILE);
47 | try{
48 | Files.move(screenshot, new File("resources/screenshots/" + result.getName() + ".png"));
49 | }catch(IOException e){
50 | e.printStackTrace();
51 | }
52 | }
53 | }
54 |
55 | public WindowManager getWindowManager(){
56 | return new WindowManager(driver);
57 | }
58 |
59 | private ChromeOptions getChromeOptions(){
60 | ChromeOptions options = new ChromeOptions();
61 | options.addArguments("disable-infobars");
62 | //options.setHeadless(true);
63 | return options;
64 | }
65 |
66 | public CookieManager getCookieManager(){
67 | return new CookieManager(driver);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/dropdown/DropdownTests.java:
--------------------------------------------------------------------------------
1 | package dropdown;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 | import static org.testng.Assert.assertTrue;
8 |
9 | public class DropdownTests extends BaseTests {
10 |
11 | @Test
12 | public void testSelectOption(){
13 | var dropDownPage = homePage.clickDropDown();
14 |
15 | String option = "Option 1";
16 | dropDownPage.selectFromDropDown(option);
17 | var selectedOptions = dropDownPage.getSelectedOptions();
18 | assertEquals(selectedOptions.size(), 1, "Incorrect number of selections");
19 | assertTrue(selectedOptions.contains(option), "Option not selected");
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter10/javascript/JavaScriptTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter10.javascript;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import java.util.List;
7 |
8 | import static org.testng.Assert.assertEquals;
9 | import static org.testng.Assert.assertTrue;
10 |
11 | public class JavaScriptTests extends BaseTests {
12 |
13 | @Test
14 | public void testAddMultipleAttributeToDropdown() {
15 |
16 | var dropDownPage = homePage.clickDropDown();
17 | dropDownPage.addMultipleAttribute();
18 |
19 | var optionsToSelect = List.of("Option 1", "Option 2");
20 | optionsToSelect.forEach(dropDownPage::selectFromDropDown);
21 |
22 | var selectedOptions = dropDownPage.getSelectedOptions();
23 | assertTrue(selectedOptions.containsAll(optionsToSelect), "All options were not selected");
24 | assertEquals(selectedOptions.size(), optionsToSelect.size(), "Number of selected items");
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter11/windows/WindowTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter11.windows;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertTrue;
7 |
8 | public class WindowTests extends BaseTests {
9 |
10 | @Test
11 | public void testWindowTabs(){
12 | var buttonPage = homePage.clickDynamicLoading().rightClickOnExample2Link();
13 | getWindowManager().switchToNewTab();
14 | assertTrue(buttonPage.isStartButtonDisplayed(), "Start button is not displayed");
15 | }
16 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter14/cookies/CookiesTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter14.cookies;
2 |
3 | import base.BaseTests;
4 | import org.openqa.selenium.Cookie;
5 | import org.testng.annotations.Test;
6 |
7 | import static org.testng.Assert.assertFalse;
8 |
9 | public class CookiesTests extends BaseTests {
10 |
11 | @Test
12 | public void testDeleteCookie(){
13 | var cookieManager = getCookieManager();
14 | Cookie cookie = cookieManager.buildCookie("optimizelyBuckets", "%7B%TD");
15 | cookieManager.deleteCookie(cookie);
16 | assertFalse(cookieManager.isCookiePresent(cookie), "Cookie was not deleted");
17 | }
18 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter3/menu/MenuCount.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter3.menu;
2 |
3 | import org.openqa.selenium.By;
4 | import org.openqa.selenium.WebDriver;
5 | import org.openqa.selenium.WebElement;
6 | import org.openqa.selenium.chrome.ChromeDriver;
7 |
8 | import java.util.List;
9 |
10 | public class MenuCount {
11 |
12 | private WebDriver driver;
13 |
14 | public void printLinkCount(){
15 | System.setProperty("webdriver.chrome.driver", "resources/chromedriver");
16 | driver = new ChromeDriver();
17 | driver.get("https://the-internet.herokuapp.com/");
18 | driver.findElement(By.linkText("Shifting Content")).click();
19 | driver.findElement(By.linkText("Example 1: Menu Element")).click();
20 |
21 |
22 | List menuItems = driver.findElements(By.tagName("li"));
23 | System.out.println("Number of menu elements: " + menuItems.size());
24 |
25 | driver.quit();
26 | }
27 |
28 | public static void main(String args[]){
29 | MenuCount test = new MenuCount();
30 | test.printLinkCount();
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter4/passwords/ForgotPasswordTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter4.passwords;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class ForgotPasswordTests extends BaseTests {
9 |
10 | @Test
11 | public void testRetrievePassword(){
12 | var forgetPasswordPage = homePage.clickForgotPassword();
13 | var emailSentPage = forgetPasswordPage.retrievePassword("tau@example.com");
14 | assertEquals(emailSentPage.getMessage(), "Your e-mail's been sent!", "Message is incorrect");
15 | }
16 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter6/slider/SliderTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter6.slider;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class SliderTests extends BaseTests {
9 |
10 | @Test
11 | public void testSlideToWholeNumber(){
12 | String value = "4";
13 | var sliderPage = homePage.clickHorizonalSlider();
14 | sliderPage.setSliderValue(value);
15 | assertEquals(sliderPage.getSliderValue(), value, "Slider value is incorrect");
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter7/contextmenu/ContextMenuTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter7.contextmenu;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class ContextMenuTests extends BaseTests {
9 |
10 | @Test
11 | public void testRightClick(){
12 | var menuPage = homePage.clickContextMenu();
13 | menuPage.rightClickInBox();
14 | String message = menuPage.getPopUpText();
15 | menuPage.acceptPopUp();
16 | assertEquals(message, "You selected a context menu", "Popup message incorrect");
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter8/frames/FrameTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter8.frames;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class FrameTests extends BaseTests {
9 |
10 | @Test
11 | public void testFrameText() {
12 | var nestedFramesPage = homePage.clickFramesPage().clickNestedFrames();
13 | assertEquals(nestedFramesPage.getLeftFrameText(), "LEFT", "Left frame text incorrect");
14 | assertEquals(nestedFramesPage.getBottomFrameText(), "BOTTOM", "Bottom frame text incorrect");
15 | }
16 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/exercises/chapter9/wait/WaitTests.java:
--------------------------------------------------------------------------------
1 | package exercises.chapter9.wait;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class WaitTests extends BaseTests {
9 |
10 | @Test
11 | public void testWaitUntilVisible(){
12 | var loadingPage = homePage.clickDynamicLoading().clickExample2();
13 | loadingPage.clickStart();
14 | assertEquals(loadingPage.getLoadedText(), "Hello World!", "Loaded text incorrect");
15 | }
16 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/frames/FrameTests.java:
--------------------------------------------------------------------------------
1 | package frames;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class FrameTests extends BaseTests {
9 |
10 | @Test
11 | public void testWysiwyg(){
12 | var editorPage = homePage.clickWysiwygEditor();
13 | editorPage.clearTextArea();
14 |
15 | String text1 = "hello ";
16 | String text2 = "world";
17 |
18 | editorPage.setTextArea(text1);
19 | editorPage.decreaseIndention();
20 | editorPage.setTextArea(text2);
21 |
22 | assertEquals(editorPage.getTextFromEditor(), text1+text2, "Text from editor is incorrect");
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/hover/HoverTests.java:
--------------------------------------------------------------------------------
1 | package hover;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.*;
7 |
8 | public class HoverTests extends BaseTests {
9 |
10 | @Test
11 | public void testHoverUser1(){
12 | var hoversPage = homePage.clickHovers();
13 | var caption = hoversPage.hoverOverFigure(1);
14 | assertTrue(caption.isCaptionDisplayed(), "Caption not displayed");
15 | assertEquals(caption.getTitle(), "name: user1", "Caption title incorrect");
16 | assertEquals(caption.getLinkText(), "View profile", "Caption link text incorrect");
17 | assertTrue(caption.getLink().endsWith("/users/1"), "Link incorrect");
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/javascript/JavaScriptTests.java:
--------------------------------------------------------------------------------
1 | package javascript;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | public class JavaScriptTests extends BaseTests {
7 |
8 | /************************************************************
9 | NOTE: We did not add assertions to these tests in the video
10 | ************************************************************/
11 |
12 | @Test
13 | public void testScrollToTable(){
14 | homePage.clickLargeAndDeepDom().scrollToTable();
15 | }
16 |
17 | @Test
18 | public void testScrollToFifthParagraph(){
19 | homePage.clickInfiniteScroll().scrollToParagraph(5);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/keys/KeysTests.java:
--------------------------------------------------------------------------------
1 | package keys;
2 |
3 | import base.BaseTests;
4 | import org.openqa.selenium.Keys;
5 | import org.testng.annotations.Test;
6 |
7 | import static org.testng.Assert.assertEquals;
8 |
9 | public class KeysTests extends BaseTests {
10 |
11 | @Test
12 | public void testBackspace(){
13 | var keyPage = homePage.clickKeyPresses();
14 | keyPage.enterText("A" + Keys.BACK_SPACE);
15 | assertEquals(keyPage.getResult(), "You entered: BACK_SPACE", "Input result incorrect");
16 | }
17 |
18 | @Test
19 | public void testPi(){
20 | var keyPage = homePage.clickKeyPresses();
21 | keyPage.enterPi();
22 | /*
23 | NOTE: we didn't finish this test in the video.
24 | We debugged to watch it enter the pi key
25 | */
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/login/LoginTests.java:
--------------------------------------------------------------------------------
1 | package login;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 | import pages.LoginPage;
6 | import pages.SecureAreaPage;
7 |
8 | import static org.testng.Assert.*;
9 |
10 | public class LoginTests extends BaseTests {
11 |
12 | @Test
13 | public void testSuccessfulLogin(){
14 | LoginPage loginPage = homePage.clickFormAuthentication();
15 | loginPage.setUsername("tomsmith");
16 | loginPage.setPassword("SuperSecretPassword!");
17 | SecureAreaPage secureAreaPage = loginPage.clickLoginButton();
18 | assertTrue(secureAreaPage.getAlertText()
19 | .contains("You logged into a secure area!"),
20 | "Alert text is incorrect");
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/navigation/NavigationTests.java:
--------------------------------------------------------------------------------
1 | package navigation;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | public class NavigationTests extends BaseTests {
7 |
8 | /*************************************************
9 | * NOTE: These tests do not assert anything.
10 | * In the video, we used this code to demonstrate
11 | * window management
12 | *************************************************/
13 |
14 | @Test
15 | public void testNavigator(){
16 | homePage.clickDynamicLoading().clickExample1();
17 | getWindowManager().goBack();
18 | getWindowManager().refreshPage();
19 | getWindowManager().goForward();
20 | getWindowManager().goTo("https://google.com");
21 | }
22 |
23 | @Test
24 | public void testSwitchTab(){
25 | homePage.clickMultipleWindows().clickHere();
26 | getWindowManager().switchToTab("New Window");
27 | }
28 | }
--------------------------------------------------------------------------------
/webdriver_java/src/test/java/wait/WaitTests.java:
--------------------------------------------------------------------------------
1 | package wait;
2 |
3 | import base.BaseTests;
4 | import org.testng.annotations.Test;
5 |
6 | import static org.testng.Assert.assertEquals;
7 |
8 | public class WaitTests extends BaseTests {
9 |
10 | @Test
11 | public void testWaitUntilHidden(){
12 | var loadingPage = homePage.clickDynamicLoading().clickExample1();
13 | loadingPage.clickStart();
14 | assertEquals(loadingPage.getLoadedText(), "Hello World!", "Loaded text incorrect");
15 | }
16 | }
--------------------------------------------------------------------------------