拖放
WebDriver允許我們拖放元素,如將某個(gè)元素拖到其他地方、或者將某個(gè)元素拖到其他元素上。
<code>WebElement element = driver.findElement(By.name("source"));
WebElement element = driver.findElement(By.name("target"));
(new Actions(driver)).dragAndDrop(element, target).perform();</code>
切換window或者Frame
對(duì)于現(xiàn)在的web應(yīng)用程序來(lái)說(shuō),很少有單個(gè)window的情況,都是嵌入了其他的frame。WebDrvier支持使用”switchTO”方法切換到其他window。
<code>driver.switchTo().window.("windowName");</code>
上面的代碼執(zhí)行后,driver會(huì)切換到windowName這個(gè)window。但是如何獲取windowName呢?來(lái)一個(gè)例子:
<code><a href="
http://www.yeetrack.com" target="windowName">點(diǎn)擊打開(kāi)新窗口</a></code>
還有,我們可以通過(guò)”window handle”來(lái)切換,并且還可以遍歷當(dāng)前所有的window
<code>for(String handle : driver.getWindowHandles())
{
driver.switchTo().window(handle);
}</code>
切換frame(或者iframe)
<code>driver.switchTo().frame("frameName");</code>
switchTo()可以鏈?zhǔn)秸{(diào)用,或者通過(guò)index來(lái)切換
<code>drvier.switchTo().frame("frameName")
.switchTo().frame(0)
.switchTo().frame("child");</code>
上面的語(yǔ)句執(zhí)行后,driver會(huì)進(jìn)入”frameName”這個(gè)frame,然后進(jìn)入到第一個(gè)子frame,然后再進(jìn)入到這個(gè)子frame的名稱(chēng)是”child”的frame中。如果要回到的frame,執(zhí)行下面的代碼:
<code>driver.switchTo().defaultContent();</code>
導(dǎo)航:History和Location
早先,我們使用WebDriver的get方法,打開(kāi)了”http://www.yeetrack.com”。WebDriver提供一些接口,其中一個(gè)如下:
<code>driver.navigate().to("
http://www.yeetrack.com");</code>
“navigate().to()”和”get()”方法,實(shí)現(xiàn)的功能完全一樣,只不過(guò)”get()”拼寫(xiě)起來(lái)更簡(jiǎn)單。
“navigete”接口,還可以控制瀏覽器的前進(jìn)和后退:
<code>driver.navigate().forward();
driver.navigate().back();</code>
請(qǐng)注意,這個(gè)功能完全依賴(lài)于底層的瀏覽器。如果兩種瀏覽器的行為不一致,那么代碼執(zhí)行的效果也會(huì)不一致。
Cookies
瀏覽器的安全測(cè)試,cookie是不能跨域的,所以你想操作A域名的cookie,首先你要讓切換到A域名上。
<code>//打開(kāi)域名
driver.get("
http://www.yeetrack.com");
//添加Cookie
Cookie cookie = new Cookie("uuid", "abcdedfjeiajfei");
driver.manage().addCookie(cookie);
//遍歷當(dāng)前域名的cookie
Set(Cookie) allCookies = driver.manage().getCookies();
for(Cookie loadedCookie : allCookies)
{
System.out.println(String.format("%s ---> %s", loadedCookie.getName(), loadedCookie.getValue()));
}</code>