拖放
WebDriver允許我們拖放元素,如將某個元素拖到其他地方、或者將某個元素拖到其他元素上。
<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
對于現(xiàn)在的web應(yīng)用程序來說,很少有單個window的情況,都是嵌入了其他的frame。WebDrvier支持使用”switchTO”方法切換到其他window。
<code>driver.switchTo().window.("windowName");</code>
上面的代碼執(zhí)行后,driver會切換到windowName這個window。但是如何獲取windowName呢?來一個例子:
<code><a href="
http://www.yeetrack.com" target="windowName">點(diǎn)擊打開新窗口</a></code>
還有,我們可以通過”window handle”來切換,并且還可以遍歷當(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)用,或者通過index來切換
<code>drvier.switchTo().frame("frameName")
.switchTo().frame(0)
.switchTo().frame("child");</code>
上面的語句執(zhí)行后,driver會進(jìn)入”frameName”這個frame,然后進(jìn)入到第一個子frame,然后再進(jìn)入到這個子frame的名稱是”child”的frame中。如果要回到的frame,執(zhí)行下面的代碼:
<code>driver.switchTo().defaultContent();</code>
導(dǎo)航:History和Location
早先,我們使用WebDriver的get方法,打開了”http://www.yeetrack.com”。WebDriver提供一些接口,其中一個如下:
<code>driver.navigate().to("
http://www.yeetrack.com");</code>
“navigate().to()”和”get()”方法,實(shí)現(xiàn)的功能完全一樣,只不過”get()”拼寫起來更簡單。
“navigete”接口,還可以控制瀏覽器的前進(jìn)和后退:
<code>driver.navigate().forward();
driver.navigate().back();</code>
請注意,這個功能完全依賴于底層的瀏覽器。如果兩種瀏覽器的行為不一致,那么代碼執(zhí)行的效果也會不一致。
Cookies
瀏覽器的安全測試,cookie是不能跨域的,所以你想操作A域名的cookie,首先你要讓切換到A域名上。
<code>//打開域名
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>