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()
好了,時間不早了今天就分享到這里,感謝你耐心地閱讀!