Selenium WebDriver 介紹(4)

發表于:2014-04-08來源:博客園作者:思勉點擊數: 標簽:
} 你也可以在Frame之間切換(或者進入Frame): driver.switchTo().frame(frameName); 你還可以根據路徑使用Frame的子Frame,而且可以通過索引定位Frame。 driver.switchTo().f

  }

  你也可以在Frame之間切換(或者進入Frame):

  driver.switchTo().frame("frameName");

  你還可以根據路徑使用Frame的子Frame,而且可以通過索引定位Frame。

  driver.switchTo().frame("frameName.0.child");

  以上方法將切換到名稱為“frameName”的Frame的第一個子Frame,所有Frame都是Web頁面的最頂端開始計數。

  7.5彈出框

  Selenium2.0 beta1版本,我們提供方法獲取彈出框。在你觸發彈出框的操作后,你可以用一下方法進入彈出框:

  Alert alert = driver.switchTo().alert();

  以上方法將會返回當前當前打開的alert對象,你可以對這個對象進行任何可操作:點擊取消,點擊確定,關閉窗口,獲取alert的文本內容等。這個接口在alerts、confirms、prompts對象上都有很好的應用,具體請參見API文檔。

  7.6Navigation:瀏覽器本地歷史記錄

  前文中,我們使用get方法來獲取網頁(driver.get("http://www.example.com"))。正如你看到的,WebDriver有不少輕量級的功能聚焦的接口,Navigation就是這樣一個。正因為加載網頁是一個再普通不過的需求,這個方法存在于Driver類下面,但是用法很簡單:

  driver.navigate().to("http://www.example.com");

  重申一下,"navigate().to()"和"get()"做的是同樣的事情,只不過其中一個更適合打印。

  Navigate接口還提供方法可以在瀏覽器歷史記錄中前后翻頁。

  driver.navigate().forward();

  driver.navigate().back();

  請注意,以上功能完全取決于底層的瀏覽器。如果你習慣跨瀏覽器操作,當你使用這些接口時可能會出現意想不到的的異常。

  7.7Cookies

  在我們開始下一步的講解之前,你可能對WebDriver如何操作本地Cookies很感興趣。首先,你必須處于當前Cookie的作用域。如果你在打開一個網頁之前嘗試預置Cookie,而且你的主頁大到需要很長一段時間來加載,這時候你需要找一個小點的網頁來替代,比如HTTP 404網頁(http://example.com/some404page)。

  // 打開Cookie作用的網站

  driver.get("http://www.example.com");

  // 設置全局Cookie

  Cookie cookie = new Cookie("key", "value");

  driver.manage().addCookie(cookie);

  // 輸出當前網頁所有可用的Cookie

  Set allCookies = driver.manage().getCookies();

  for (Cookie loadedCookie : allCookies) {

  System.out.println(String.format("%s -> %s", loadedCookie.getName(), loadedCookie.getValue()));

  }

  // 你又三種方法刪除Cookie

  // By name

  driver.manage().deleteCookieNamed("CookieName");

  // By Cookie

  driver.manage().deleteCookie(loadedCookie);

  // Or all of them

  driver.manage().deleteAllCookies();

  7.8 修改用戶代理服務器

  對于FireFox來說很簡單:

  FirefoxProfile profile = new FirefoxProfile();

  profile.addAdditionalPreference("general.useragent.override", "some UA string");

  WebDriver driver = new FirefoxDriver(profile);

  7.9 拖拽Web元素

  下面是一個拖拽Web頁面元素的例子,前提是本地事件必須可用。

  WebElement element = driver.findElement(By.name("source"));

  WebElement target = driver.findElement(By.name("target"));

  (new Actions(driver)).dragAndDrop(element, target).perform();

  8 各種Driver的特性以及如何選擇合適Driver

  翻譯中

  9 向前兼容:融合WebDriver和Selenium-RC

  翻譯中

  10 為遠程WebDriver單獨啟動Selenium Server

  翻譯中

  譯者注:

  1、原文鏈接:http://www.seleniumhq.org/docs/03_webdriver.jsp。

  2、文中只包含了java相關的操作,WebDriver還支持c#/Python/Ruby/Perl/PHP/Perl,如有需要,請閱讀原文。

  3、language binding,又叫glue code,意思是膠水代碼,比如有個C++的lib庫,java調用這個庫的api就叫java binding。參考:http://en.wikipedia.org/wiki/Language_binding。

  4、措辭拙劣,有些單詞句子沒有深究就直譯了,深感從閱讀到翻譯差的不僅僅是一本字典,還有文化的差異。筆者強烈推薦直接閱讀官網上的原文,如果我的譯文給你造成誤解,深感不安。這也是最后三章不敢繼續班門弄斧的原因,等我對Selenium熟悉了之后再回來補全。

原文轉自:hhttp://www.cnblogs.com/keepsilent/p/3530825.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97