java+selenium實(shí)現(xiàn)自動(dòng)化操作瀏覽器
1.簡(jiǎn)介
在Web自動(dòng)化的操作中,我們通常需要使用一些方法來(lái)操作瀏覽器,今天就來(lái)學(xué)習(xí)一下。這一篇宏哥主要是介紹一下,在自動(dòng)化測(cè)試的時(shí)候,我們常見(jiàn)的一些瀏覽器操作有哪些,宏哥將會(huì)一一介紹和講解。
2.瀏覽器操作
宏哥首先介紹一下常用的基本操作,然后再通過(guò)具體實(shí)例給小伙伴或者童鞋們演示一下。
2.1打開(kāi)瀏覽器
//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,默認(rèn)安裝 System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe"); //FireFox版本小于48 System.setProperty("webdriver.firefox.marionette", ".\\Tools\\geckodriver.exe"); WebDriver driver = new FirefoxDriver();
2.2打開(kāi)url
//兩種方式實(shí)現(xiàn)的效果一樣 String url = "http://www.baidu.com"; driver.get(url); driver.navigate().to(url);
2.3瀏覽器最大化
窗口最大化,maximize()方法可以將瀏覽器窗口最大化
// 瀏覽器窗口最大 driver.manage().window().maximize();
2.4瀏覽器刷新
refresh()方法可以在自動(dòng)化測(cè)試的時(shí)候刷新當(dāng)前頁(yè)面
// 當(dāng)前頁(yè)刷新 driver.navigate().refresh();
2.5瀏覽器前進(jìn)
forward()方法可以模擬瀏覽器的前進(jìn)操作
// 前進(jìn),跳轉(zhuǎn)到下一頁(yè) driver.navigate().forward ();
2.6瀏覽器后退
back()方法可以模擬瀏覽器的回退操作
// 后退,跳轉(zhuǎn)到上一頁(yè) driver.navigate().back();
2.7瀏覽器位置和設(shè)置窗口位置
瀏覽器的位置設(shè)置getPosition()
* 注意targetPosition是一個(gè)點(diǎn)對(duì)象,把一個(gè)點(diǎn)作為參數(shù)傳入
* 聲明一個(gè) point 對(duì)象,兩個(gè) 150 表示瀏覽器的位置相對(duì)于屏幕左上角(0,0)的橫縱坐標(biāo)舉例
Point targetPosition = new Point(150,150); driver.manage().window().setPosition(targetPosition); System.out.println(driver.manage().window().getPosition());
2.8瀏覽器窗口大小
獲得窗口大小,getSize()方法能夠獲得窗口的尺寸信息,返回一個(gè)Dimension對(duì)象,該對(duì)象包括了窗口的高度,寬度信息
*注意targetSize是一個(gè)對(duì)象傳入,也不可以直接寫(xiě)成 1366*768
* 1366 * 768 表示窗口的長(zhǎng)和寬
Dimension targetSize = new Dimension(1366,768); driver.manage().window().setSize(targetSize); System.out.println(driver.manage().window().getSize());
2.9返回當(dāng)前的url和title
// 返回當(dāng)前頁(yè)面的Ttile String title = driver.getTitle(); // 返回當(dāng)前頁(yè)面的url String currentUrl = driver.getCurrentUrl();
2.10關(guān)閉瀏覽器
// 關(guān)閉當(dāng)前頁(yè)面 driver.close(); // 關(guān)閉由selenium所啟動(dòng)的所有頁(yè)面 driver.quit();
3.項(xiàng)目實(shí)戰(zhàn)
以度娘為例,打開(kāi)瀏覽器設(shè)置瀏覽器的位置,然后再設(shè)置瀏覽器的大小。最后將瀏覽器最大化。查詢“北京宏哥”后,刷新頁(yè)面執(zhí)行回退到百度首頁(yè),然后有執(zhí)行前進(jìn)進(jìn)入到搜索“北京宏哥”頁(yè)面。
3.1代碼設(shè)計(jì)
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 { //打開(kāi)瀏覽器 System.setProperty("webdriver.gecko.driver", ".\\Tools\\chromedriver.exe"); //指定驅(qū)動(dòng)路徑 WebDriver driver =new ChromeDriver(); //設(shè)置瀏覽器出現(xiàn)的位置 driver.manage().window().setPosition(new Point(1350, 200)); Thread.sleep(1000); //設(shè)置瀏覽器大小 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()); //瀏覽器滿屏,覆蓋任務(wù)欄 //webDriver.manage().window().fullscreen(); //瀏覽器最大化,不覆蓋任務(wù)欄 driver.manage().window().maximize(); System.out.println("瀏覽器最大化"); //打開(kāi)URL driver.get("http://www.baidu.com"); System.out.println("打開(kāi)URL"); Thread.sleep(2000); //輸入“北京宏哥”,點(diǎn)擊“百度一下” WebElement SearchBox = driver.findElement(By.xpath( "http://*[@id='kw']" )); SearchBox.sendKeys("北京宏哥"); WebElement SearchButton = driver.findElement(By.xpath("http://*[@id='su']")); SearchButton.click(); // 當(dāng)前頁(yè)刷新 driver.navigate().refresh(); System.out.println("刷新當(dāng)前頁(yè)面"); Thread.sleep(2000); //執(zhí)行瀏覽器后退 driver.navigate().back(); System.out.println("back... this www.baidu.com"); Thread.sleep(2000); //執(zhí)行瀏覽器前進(jìn) driver.navigate().forward(); System.out.println("forward..."+driver.getCurrentUrl ()); Thread.sleep(2000); driver.quit(); Thread.sleep(2000); driver.quit(); } }
3.3運(yùn)行代碼
1.運(yùn)行代碼,右鍵Run AS->java Application,控制臺(tái)輸出,如下圖所示:
2.運(yùn)行代碼后電腦端的瀏覽器的動(dòng)作,可以看到查詢“北京宏哥”后,刷新頁(yè)面執(zhí)行回退到百度首頁(yè),然后有執(zhí)行前進(jìn)進(jìn)入到搜索“北京宏哥”頁(yè)面。
4.小結(jié)
在代碼報(bào)錯(cuò)處,提示導(dǎo)入包,要注意導(dǎo)入selenium的包(一個(gè)java包和一個(gè)selenium包),否則還報(bào)錯(cuò),沒(méi)有這個(gè)方法。如下圖所示:
5.拓展
其他方法
這些基本上在前邊的文章中宏哥都介紹過(guò)了這里就簡(jiǎn)單的提一下,不做贅述了。
// 返回當(dāng)前的瀏覽器的窗口句柄 String currentWindowHandle = driver.getWindowHandle() // 返回當(dāng)前的瀏覽器的所有窗口句柄 Set<String> allWindowHandles = driver.getWindowHandles(); // 返回當(dāng)前頁(yè)面的源碼 String currentPageSource = getPageSource()
以上就是java+selenium實(shí)現(xiàn)自動(dòng)化操作瀏覽器的詳細(xì)內(nèi)容,更多關(guān)于java selenium操作瀏覽器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫(xiě)分離效果
這篇文章主要介紹了springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫(xiě)分離,通過(guò)使用docker獲取mysql鏡像,具體內(nèi)容詳情跟隨小編一起看看吧2021-09-09詳解Spring MVC的異步模式(高性能的關(guān)鍵)
本篇文章主要介紹了詳解Spring MVC的異步模式(高性能的關(guān)鍵),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02詳解SpringCloud Gateway 2020.0.2最新版
這篇文章主要介紹了SpringCloud Gateway 2020.0.2最新版,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04SpringBoot實(shí)現(xiàn)動(dòng)態(tài)配置及項(xiàng)目打包部署上線功能
本文講解的是如何使用Spring動(dòng)態(tài)配置文件,實(shí)現(xiàn)不同環(huán)境不同配置,靈活切換配置文件;以及講述了如何使用?Maven?打包,然后上傳至Linux服務(wù)器進(jìn)行部署,對(duì)SpringBoot打包部署上線過(guò)程感興趣的朋友一起看看吧2022-10-10一篇文章帶你學(xué)會(huì)Spring?MVC表單標(biāo)簽
Spring MVC表單標(biāo)簽是網(wǎng)頁(yè)的可配置和可重復(fù)使用的構(gòu)建塊,下面這篇文章主要給大家介紹了如何通過(guò)一篇文章學(xué)會(huì)Spring?MVC表單標(biāo)簽的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03SpringCloud @RefreshScope注解源碼層面深入分析
@RefreshScope注解能幫助我們做局部的參數(shù)刷新,但侵入性較強(qiáng),需要開(kāi)發(fā)階段提前預(yù)知可能的刷新點(diǎn),并且該注解底層是依賴于cglib進(jìn)行代理的,所以不要掉入cglib的坑,出現(xiàn)刷了也不更新情況2023-04-04如何在spring事務(wù)提交之后進(jìn)行異步操作
這篇文章主要為大家介紹了如何在spring事務(wù)提交之后進(jìn)行異步操作,這些異步操作必須得在該事務(wù)成功提交后才執(zhí)行,回滾則不執(zhí)行,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-09-09