Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,21 @@

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.10.0</version>
</dependency>

<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.4.0</version>
</dependency>

<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.8.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
23 changes: 23 additions & 0 deletions src/main/java/wait_service/WaitService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package wait_service;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class WaitService {

private WebDriverWait wait;

public WaitService(WebDriver driver) {
this.wait = new WebDriverWait(driver, Duration.ofSeconds(10));
}

public WebElement waitForVisibilityByLocator(By lo) {
return wait.until(ExpectedConditions.visibilityOfElementLocated(lo));
}

}
32 changes: 32 additions & 0 deletions src/main/java/web_driver/WebDriverFactory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package web_driver;

import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeOptions;

public class WebDriverFactory {

private static WebDriver driver;

public WebDriver getDriver() {
WebDriverManager.edgedriver().setup();
if (driver == null){
driver = new EdgeDriver(edgeOptions());
}
return driver;
}

public EdgeOptions edgeOptions() {
EdgeOptions edgeOptions = new EdgeOptions();

edgeOptions.setHeadless(true);
edgeOptions.addArguments("--disable-gpu");
edgeOptions.addArguments("--window-size=1920,1200");
edgeOptions.addArguments("--ignore-certificate-errors");
edgeOptions.addArguments("--silent");
edgeOptions.addArguments("--start-maximized");

return edgeOptions;
}
}
22 changes: 22 additions & 0 deletions src/test/java/elements/Button.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class Button {

private UIElement uiElement;

public Button(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
}

public Button(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
}

public void click() {
uiElement.click();
}
}
22 changes: 22 additions & 0 deletions src/test/java/elements/CheckBox.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class CheckBox {

private UIElement uiElement;

public CheckBox(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
}

public CheckBox(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
}

public void click() {
uiElement.click();
}
}
22 changes: 22 additions & 0 deletions src/test/java/elements/DropDown.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;

public class DropDown{

private UIElement uiElement;
public Select select;

public DropDown(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
select = new Select(uiElement);
}

public DropDown(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
select = new Select(uiElement);
}
}
23 changes: 23 additions & 0 deletions src/test/java/elements/RadioButtonTable.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class RadioButtonTable {

private UIElement uiElement;

public RadioButtonTable(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
}

public RadioButtonTable(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
}


public void selectButtonByValue(int value) {
uiElement.findElement(By.xpath("//input[@type='radio' and @value='" + value + "']")).click();
}
}
22 changes: 22 additions & 0 deletions src/test/java/elements/TextInput.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package elements;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class TextInput {

private UIElement uiElement;

public TextInput(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
}

public TextInput(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
}

public void sendKeys(CharSequence... s) {
uiElement.sendKeys(s);
}
}
128 changes: 128 additions & 0 deletions src/test/java/elements/UIElement.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
package elements;

import org.openqa.selenium.*;
import wait_service.WaitService;

import java.rmi.server.UID;
import java.util.ArrayList;
import java.util.List;

public class UIElement implements WebElement {

private WebElement webElement;
private WaitService waitService;
private WebDriver driver;

public UIElement(WebDriver driver, WebElement element) {
this.driver = driver;
this.waitService = new WaitService(driver);
this.webElement = element;
}

public UIElement(WebDriver driver, By locator) {
this.driver = driver;
this.waitService = new WaitService(driver);
this.webElement = waitService.waitForVisibilityByLocator(locator);
}


@Override
public void click() {
moveToElement();
submit();
}

@Override
public void submit() {
webElement.submit();
}

@Override
public void sendKeys(CharSequence... keysToSend) {
moveToElement();
webElement.sendKeys(keysToSend);
}

@Override
public void clear() {
webElement.clear();
}

@Override
public String getTagName() {
return webElement.getTagName();
}

@Override
public String getAttribute(String name) {
return webElement.getAttribute(name);
}

@Override
public boolean isSelected() {
return webElement.isSelected();
}

@Override
public boolean isEnabled() {
return webElement.isEnabled();
}

@Override
public String getText() {
return webElement.getText();
}

@Override
public List<WebElement> findElements(By by) {
return webElement.findElements(by);
}

public List<UIElement> findUIElements(By by) {
ArrayList<UIElement> list = new ArrayList<>();
for (WebElement element : webElement.findElements(by)) {
list.add(new UIElement(driver, element));
}
return list;
}


@Override
public UIElement findElement(By by) {
return new UIElement(driver, webElement.findElement(by));
}

@Override
public boolean isDisplayed() {
return webElement.isDisplayed();
}

@Override
public Point getLocation() {
return webElement.getLocation();
}

@Override
public Dimension getSize() {
return webElement.getSize();
}

@Override
public Rectangle getRect() {
return webElement.getRect();
}

@Override
public String getCssValue(String propertyName) {
return webElement.getCssValue(propertyName);
}

@Override
public <X> X getScreenshotAs(OutputType<X> target) throws WebDriverException {
return webElement.getScreenshotAs(target);
}

public void moveToElement() {
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true)", webElement);
}
}
25 changes: 25 additions & 0 deletions src/test/java/elements/table/Table.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package elements.table;

import elements.UIElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

public class Table {

private UIElement uiElement;
public TableHeader tableHeader;
public TableBody tableBody;

public Table(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
tableBody = new TableBody(driver, uiElement.findElement(By.cssSelector("tbody")));
tableHeader = new TableHeader(driver, uiElement.findElement(By.cssSelector("thead")));
}

public Table(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
tableBody = new TableBody(driver, uiElement.findElement(By.cssSelector("tbody")));
tableHeader = new TableHeader(driver, uiElement.findElement(By.cssSelector("thead")));
}
}
36 changes: 36 additions & 0 deletions src/test/java/elements/table/TableBody.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package elements.table;

import elements.UIElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import java.util.ArrayList;
import java.util.List;

public class TableBody {

private UIElement uiElement;

public TableBody(WebDriver driver, By locator) {
uiElement = new UIElement(driver, locator);
}

public TableBody(WebDriver driver, WebElement element) {
uiElement = new UIElement(driver, element);
}

public List<UIElement> getColumnByIndex(int index) {
List<UIElement> columns = uiElement.findUIElements(By.tagName("tr"));
UIElement column = columns.get(index -1);
return column.findUIElements(By.tagName("td"));
}

public List<UIElement> getRowByIndex(int index) {
return uiElement.findUIElements(By.cssSelector(".column" + index));
}

public UIElement getCellByRowAndColumn(int row, int column) {
return getColumnByIndex(column).get(row -1);
}
}
Loading