Skip to content

Commit 9f83c37

Browse files
committed
Wait strategies
1 parent 7b5db4e commit 9f83c37

File tree

5 files changed

+87
-0
lines changed

5 files changed

+87
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package pages;
2+
3+
import org.openqa.selenium.By;
4+
import org.openqa.selenium.WebDriver;
5+
6+
public class DynamicLoadingPage {
7+
8+
private WebDriver driver;
9+
private String linkXpath_Format = ".//a[contains(text(), '%s')]";
10+
private By link_Example1 = By.xpath(String.format(linkXpath_Format, "Example 1"));
11+
12+
public DynamicLoadingPage(WebDriver driver){
13+
this.driver = driver;
14+
}
15+
16+
public DynamicLoadingExample1Page clickExample1(){
17+
driver.findElement(link_Example1).click();
18+
return new DynamicLoadingExample1Page(driver);
19+
}
20+
}

webdriver_java/src/main/java/pages/HomePage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ public WysiwygEditorPage clickWysiwygEditor(){
4646
return new WysiwygEditorPage(driver);
4747
}
4848

49+
public DynamicLoadingPage clickDynamicLoading(){
50+
clickLink("Dynamic Loading");
51+
return new DynamicLoadingPage(driver);
52+
}
53+
4954
private void clickLink(String linkText){
5055
driver.findElement(By.linkText(linkText)).click();
5156
}

webdriver_java/src/test/java/base/BaseTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
import org.testng.annotations.BeforeMethod;
88
import pages.HomePage;
99

10+
import java.util.concurrent.TimeUnit;
11+
12+
1013
public class BaseTests {
1114

1215
private WebDriver driver;
@@ -16,6 +19,7 @@ public class BaseTests {
1619
public void setUp(){
1720
System.setProperty("webdriver.chrome.driver", "resources/chromedriver");
1821
driver = new ChromeDriver();
22+
//driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
1923
goHome();
2024
}
2125

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
}

0 commit comments

Comments
 (0)