在web應(yīng)用中,常常會(huì)遇見(jiàn)點(diǎn)擊某個(gè)鏈接會(huì)彈出一個(gè)新的窗口,或者是相互關(guān)聯(lián)的web應(yīng)用 ,這樣要去操作新窗口中的元素,這時(shí)就需要主機(jī)切換到新窗口進(jìn)行操作。。WebDriver 提供了switchTo().window()方法可以實(shí)現(xiàn)在不同的窗口之間切換。
以下代碼是以新浪網(wǎng)為實(shí)例。通過(guò)獲取句柄切換到指定窗口,并關(guān)閉窗口。當(dāng)然切換到指定窗口,也可以通過(guò)元素定位等方法對(duì)元素進(jìn)行操作。
getWindowHandle():獲得當(dāng)前窗口句柄。
getWindowHandles():返回的所有窗口的句柄到當(dāng)前會(huì)話。
switchTo().window():用于切換到相應(yīng)的窗口,與上一節(jié)的switchTo().frame()類似,前者用于不同窗口的切換,后者用于不同表單之間的切換。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public static void main(String[] args) throws InterruptedException { System.setProperty( "webdriver.chrome.driver" , "D:/chromedriver_win32/chromedriver.exe" ); ChromeOptions Options = new ChromeOptions(); Options.addArguments( "user-data-dir=C:\\Users\\happy\\AppData\\Local\\Google\\Chrome\\User Data" ); WebDriver driver = new ChromeDriver(Options); driver.manage().window().maximize(); // 窗口最大化 driver.get( "http://www.sina.com.cn/" ); driver.manage().timeouts().implicitlyWait( 60 , TimeUnit.SECONDS); // 設(shè)置元素等待時(shí)間 ,隱式等待 String sreachHand = driver.getWindowHandle(); // 獲取當(dāng)前窗口的句柄 driver.findElement(By.linkText( "體育" )).click(); // 打開(kāi)新浪官網(wǎng)上的體育鏈接 driver.findElement(By.linkText( "娛樂(lè)" )).click(); // 打開(kāi)新浪官網(wǎng)上的娛樂(lè)鏈接 java.util.Set<String> Handles = driver.getWindowHandles(); System.out.println(Handles.size() + "集合長(zhǎng)度" ); // 獲取所有窗口的句柄并將句柄放在Set集合中。 // 以下判斷是否是新浪網(wǎng)首頁(yè),如果是則關(guān)閉新浪網(wǎng)首頁(yè)。 for (String i : Handles) { if (i.equals(sreachHand)) { driver.switchTo().window(i); Thread.sleep( 5000 ); driver.close(); } } } |
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://www.cnblogs.com/linxinmeng/p/6940266.html