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