章節十4、4-如何獲取窗口的大小、如何把元素滾動到頁面可見位置

1、如何用JavascriptExecutor獲取瀏覽器窗口的大小java

 1 package basicweb;
 2 
 3 import static org.junit.jupiter.api.Assertions.*;
 4 
 5 import java.util.concurrent.TimeUnit;
 6 
 7 import org.junit.jupiter.api.AfterEach;
 8 import org.junit.jupiter.api.BeforeEach;
 9 import org.junit.jupiter.api.Test;
10 import org.openqa.selenium.JavascriptExecutor;
11 import org.openqa.selenium.WebDriver;
12 import org.openqa.selenium.chrome.ChromeDriver;
13 
14 class WindowSize {
15     
16     WebDriver driver;
17 //    聲明一個私有的JavascriptExecutor變量
18     private JavascriptExecutor js;
19 
20     @BeforeEach
21     void setUp() throws Exception {
22         driver = new ChromeDriver();
23 //        把driver強制轉換成JavascriptExecutor類型
24         js = (JavascriptExecutor)driver;
25         driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
26         driver.manage().window().maximize();
27     }
28 
29     @Test
30     void test() throws InterruptedException {
31 //        用Javascript的方式打開百度
32         js.executeScript("window.location = 'https://www.baidu.com';");
33 //        用Long類型的變量來接收窗口的長和寬
34 //
35         Long height = (Long)js.executeScript("return window.innerHeight;");
36 //
37         Long width = (Long)js.executeScript("return window.innerWidth;");
38         System.out.println("窗口的高度爲:"+height);
39         System.out.println("窗口的寬度爲:"+width);
40 
41     }
42     
43     @AfterEach
44     void tearDown() throws Exception {
45         Thread.sleep(2000);
46         driver.quit();
47     }
48 
49 
50 }

運行結果爲:web

 

2、如何把元素滾動到頁面可見位置chrome

一、當咱們打開頁面時,默認是在頁面的最頂部,其他的頁面部分是被遮蓋的,咱們經過滑動鼠標齒輪纔可以看到網頁剩餘的部分。api

二、若是頁面是被遮蓋的,那麼這個時候若是須要操做被遮蓋的元素,就有可能會失敗。(可能會失敗)所以這種狀況下咱們就須要滾動頁面元素到可見位置。數組

 1 package basicweb;
 2 
 3 import java.util.concurrent.TimeUnit;
 4 
 5 import org.junit.jupiter.api.AfterEach;
 6 import org.junit.jupiter.api.BeforeEach;
 7 import org.junit.jupiter.api.Test;
 8 import org.openqa.selenium.By;
 9 import org.openqa.selenium.JavascriptExecutor;
10 import org.openqa.selenium.WebDriver;
11 import org.openqa.selenium.WebElement;
12 import org.openqa.selenium.chrome.ChromeDriver;
13 
14 class ScrollingElementIntoView {
15     
16     WebDriver driver;
17 //    聲明一個私有的JavascriptExecutor變量
18     private JavascriptExecutor js;
19 
20     @BeforeEach
21     void setUp() throws Exception {
22         driver = new ChromeDriver();
23 //        把driver強制轉換成JavascriptExecutor類型
24         js = (JavascriptExecutor)driver;
25         driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
26         driver.manage().window().maximize();
27     }
28 
29     @Test
30     void test() throws InterruptedException {
31         js.executeScript("window.location = 'https://p2p.migang.com/';");
32         Thread.sleep(2000);
33 
34 //        一、滾動到頁面最底部
35 //        第一個數字表明水平位置,由於水平位置不變,所以設置爲0
36 //        第一個數字表明垂直位置,由於須要滾動到頁面最底部,因此垂直設置的數值要大於等於窗口垂直的實際數值
37         js.executeScript("window.scrollBy(0, 1900);");
38         Thread.sleep(2000);
39 
40 //        二、滾回先前的位置(還未執行滾動到頁面最底部的位置,也就是頁面最頂部)
41         js.executeScript("window.scrollBy(0,-1900);");
42         Thread.sleep(2000);
43         
44 //        三、滾動到要操做的元素位置
45         WebElement element = driver.findElement(By.xpath("//h2/span[contains(text(),'媒體報道')]"));
46 //        arguments[0]不是數組,是一個arguments對象,arguments[0]返回的是第一個參數的實際值,0會被argument代替,argument就是上面element這個元素
47 //        咱們要把這個元素提供給JavascriptExecutor
48         js.executeScript("arguments[0].scrollIntoView(true);",element);
49         Thread.sleep(2000);
50         js.executeScript("window.scrollBy(0,-190);");
51         Thread.sleep(2000);
52         element.click();
53     }
54     
55     @AfterEach
56     void tearDown() throws Exception {
57         Thread.sleep(2000);
58         driver.quit();
59     }
60 }

運行結果:瀏覽器

滾動到最底部---》最頂部---》滾動到「媒體報道」模塊(但被導航條遮蓋)---》滾動顯示出「媒體報道」模塊學習

在不少網站中,當咱們剛進入一個網站頁面,進行滑動時,導航條會固定在頂部顯示,所以咱們在代碼中滾動到「媒體報道」模塊後還須要向上滾動一點,這是由於滑動後頂部固定的導航條遮住了咱們須要定位的元素。網站

 

 

若是有不明白的小夥伴能夠加羣「555191854」問我,羣裏都是軟件行業的小夥伴相互一塊兒學習。ui

相關文章
相關標籤/搜索