Skip to content

Commit da81cc4

Browse files
committed
JavascriptExecutor
1 parent 9f83c37 commit da81cc4

File tree

6 files changed

+86
-5
lines changed

6 files changed

+86
-5
lines changed

Diff for: webdriver_java/src/main/java/pages/HomePage.java

+10
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,16 @@ public WysiwygEditorPage clickWysiwygEditor(){
4646
return new WysiwygEditorPage(driver);
4747
}
4848

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+
4959
public DynamicLoadingPage clickDynamicLoading(){
5060
clickLink("Dynamic Loading");
5161
return new DynamicLoadingPage(driver);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
}

Diff for: webdriver_java/src/test/java/base/BaseTests.java

-4
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
import org.testng.annotations.BeforeMethod;
88
import pages.HomePage;
99

10-
import java.util.concurrent.TimeUnit;
11-
12-
1310
public class BaseTests {
1411

1512
private WebDriver driver;
@@ -19,7 +16,6 @@ public class BaseTests {
1916
public void setUp(){
2017
System.setProperty("webdriver.chrome.driver", "resources/chromedriver");
2118
driver = new ChromeDriver();
22-
//driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
2319
goHome();
2420
}
2521

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
}

Diff for: webdriver_java/src/test/java/wait/WaitTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ public void testWaitUntilHidden(){
1313
loadingPage.clickStart();
1414
assertEquals(loadingPage.getLoadedText(), "Hello World!", "Loaded text incorrect");
1515
}
16-
}
16+
}

0 commit comments

Comments
 (0)