拖放
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
对于现在的web应用程序来说,很少有单个window的情况,都是嵌入了其他的frame。WebDrvier支持使用”switchTO”方法切换到其他window。
<code>driver.switchTo().window.("windowName");</code>
上面的代码执行后,driver会切换到windowName这个window。但是如何获取windowName呢?来一个例子:
<code><a href="
http://www.yeetrack.com" target="windowName">点击打开新窗口</a></code>
还有,我们可以通过”window handle”来切换,并且还可以遍历当前所有的window
<code>for(String handle : driver.getWindowHandles())
{
driver.switchTo().window(handle);
}</code>
切换frame(或者iframe)
<code>driver.switchTo().frame("frameName");</code>
switchTo()可以链式调用,或者通过index来切换
<code>drvier.switchTo().frame("frameName")
.switchTo().frame(0)
.switchTo().frame("child");</code>
上面的语句执行后,driver会进入”frameName”这个frame,然后进入到第一个子frame,然后再进入到这个子frame的名称是”child”的frame中。如果要回到的frame,执行下面的代码:
<code>driver.switchTo().defaultContent();</code>
导航:History和Location
早先,我们使用WebDriver的get方法,打开了”http://www.yeetrack.com”。WebDriver提供一些接口,其中一个如下:
<code>driver.navigate().to("
http://www.yeetrack.com");</code>
“navigate().to()”和”get()”方法,实现的功能完全一样,只不过”get()”拼写起来更简单。
“navigete”接口,还可以控制浏览器的前进和后退:
<code>driver.navigate().forward();
driver.navigate().back();</code>
请注意,这个功能完全依赖于底层的浏览器。如果两种浏览器的行为不一致,那么代码执行的效果也会不一致。
Cookies
浏览器的安全测试,cookie是不能跨域的,所以你想操作A域名的cookie,首先你要让切换到A域名上。
<code>//打开域名
driver.get("
http://www.yeetrack.com");
//添加Cookie
Cookie cookie = new Cookie("uuid", "abcdedfjeiajfei");
driver.manage().addCookie(cookie);
//遍历当前域名的cookie
Set(Cookie) allCookies = driver.manage().getCookies();
for(Cookie loadedCookie : allCookies)
{
System.out.println(String.format("%s ---> %s", loadedCookie.getName(), loadedCookie.getValue()));
}</code>