1.簡介
在Web自動化的操作中,我們通常需要使用一些方法來操作瀏覽器,今天就來學習一下。這一篇巨集哥主要是介紹一下,在自動化測試的時候,我們常見的一些瀏覽器操作有哪些,巨集哥將會一一介紹和講解。
2.瀏覽器操作
巨集哥首先介紹一下常用的基本操作,然後再通過具體例項給小夥伴或者童鞋們演示一下。
2.1開啟瀏覽器
//IE瀏覽器
System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver(); //Chrome
System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
WebDriver driver = new ChromeDriver(); //FireFox(自定義安裝)
System.setProperty("webdriver.firefox.bin", "D:\\ProgramFiles\\Mozilla Firefox\\firefox.exe");
//FireFox版本大於48,預設安裝
System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe");
//FireFox版本小於48
System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
2.2開啟url
//兩種方式實現的效果一樣
String url = "http://www.baidu.com";
driver.get(url);
driver.navigate().to(url);
2.3瀏覽器最大化
視窗最大化,maximize()方法可以將瀏覽器視窗最大化
// 瀏覽器視窗最大
driver.manage().window().maximize();
2.4瀏覽器重新整理
refresh()方法可以在自動化測試的時候重新整理當前頁面
// 當前頁重新整理
driver.navigate().refresh();
2.5瀏覽器前進
forward()方法可以模擬瀏覽器的前進操作
// 前進,跳轉到下一頁
driver.navigate().forward ();
2.6瀏覽器後退
back()方法可以模擬瀏覽器的回退操作
// 後退,跳轉到上一頁
driver.navigate().back();
2.7瀏覽器位置和設定視窗位置
瀏覽器的位置設定getPosition()
* 注意targetPosition是一個點物件,把一個點作為引數傳入
* 宣告一個 point 物件,兩個 150 表示瀏覽器的位置相對於螢幕左上角(0,0)的橫縱座標舉例
Point targetPosition = new Point(150,150);
driver.manage().window().setPosition(targetPosition);
System.out.println(driver.manage().window().getPosition());
2.8瀏覽器視窗大小
獲得視窗大小,getSize()方法能夠獲得視窗的尺寸資訊,返回一個Dimension物件,該物件包括了視窗的高度,寬度資訊
*注意targetSize是一個物件傳入,也不可以直接寫成 1366*768
* 1366 * 768 表示視窗的長和寬
Dimension targetSize = new Dimension(1366,768);
driver.manage().window().setSize(targetSize);
System.out.println(driver.manage().window().getSize());
2.9返回當前的url和title
// 返回當前頁面的Ttile
String title = driver.getTitle();
// 返回當前頁面的url
String currentUrl = driver.getCurrentUrl();
3.0關閉瀏覽器
// 關閉當前頁面
driver.close();
// 關閉由selenium所啟動的所有頁面
driver.quit();
3.專案實戰
以度娘為例,開啟瀏覽器設定瀏覽器的位置,然後再設定瀏覽器的大小。最後將瀏覽器最大化。查詢“北京巨集哥”後,重新整理頁面執行回退到百度首頁,然後有執行前進進入到搜尋“北京巨集哥”頁面。
3.1程式碼設計
3.2參考程式碼
package lessons; import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver; /**
* @author 北京-巨集哥
*
* 2021年9月6日
*/
public class Windows { public static void main(String[] args) throws InterruptedException {
//開啟瀏覽器
System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驅動路徑 WebDriver driver =new ChromeDriver(); //設定瀏覽器出現的位置
driver.manage().window().setPosition(new Point(1350, 200));
Thread.sleep(1000);
//設定瀏覽器大小
driver.manage().window().setSize(new Dimension(200, 500));
Thread.sleep(1000);
//獲取瀏覽器位置和大小資訊
System.out.println("瀏覽器所在位置:"+driver.manage().window().getPosition());
System.out.println("瀏覽器大小:"+driver.manage().window().getSize());
//瀏覽器滿屏,覆蓋工作列
//webDriver.manage().window().fullscreen();
//瀏覽器最大化,不覆蓋工作列
driver.manage().window().maximize();
System.out.println("瀏覽器最大化");
//開啟URL
driver.get("http://www.baidu.com");
System.out.println("開啟URL");
Thread.sleep(2000); //輸入“北京巨集哥”,點選“百度一下”
WebElement SearchBox = driver.findElement(By.xpath( "//*[@id='kw']" ));
SearchBox.sendKeys("北京巨集哥");
WebElement SearchButton = driver.findElement(By.xpath("//*[@id='su']")); SearchButton.click(); // 當前頁重新整理
driver.navigate().refresh();
System.out.println("重新整理當前頁面");
Thread.sleep(2000);
//執行瀏覽器後退
driver.navigate().back();
System.out.println("back... this www.baidu.com");
Thread.sleep(2000); //執行瀏覽器前進
driver.navigate().forward();
System.out.println("forward..."+driver.getCurrentUrl ());
Thread.sleep(2000); driver.quit();
Thread.sleep(2000); driver.quit();
} }
3.3執行程式碼
1.執行程式碼,右鍵Run AS->java Application,控制檯輸出,如下圖所示:
2.執行程式碼後電腦端的瀏覽器的動作,可以看到查詢“北京巨集哥”後,重新整理頁面執行回退到百度首頁,然後有執行前進進入到搜尋“北京巨集哥”頁面。如下小視訊所示:
4.小結
在程式碼報錯處,提示匯入包,要注意匯入selenium的包(一個java包和一個selenium包),否則還報錯,沒有這個方法。如下圖所示:
5.拓展
5.1其他方法
這些基本上在前邊的文章中巨集哥都介紹過了這裡就簡單的提一下,不做贅述了。
// 返回當前的瀏覽器的視窗控制代碼
String currentWindowHandle = driver.getWindowHandle()
// 返回當前的瀏覽器的所有視窗控制代碼
Set<String> allWindowHandles = driver.getWindowHandles();
// 返回當前頁面的原始碼
String currentPageSource = getPageSource()
好了,時間不早了今天就分享到這裡,感謝你耐心地閱讀!