Java使用Selenium幾個例子


零、姿勢

Selenium分為兩個版本:Selenium RC和Selenium Webdriver。現在用Selenium Webdriver比較多。
Selenium是一套工具,而不僅僅是一個操縱瀏覽器的庫,它包括Selenium IDE,Selenium Grid等。
Selenium對Firefox瀏覽器支持得最好,對Chrome支持並不完善。Chrome的設計原則就是安全,讓用戶安全,由此帶來的誤傷比較多,對開發人員就不太友好,比如Chrome會自動檢測跨域訪問並禁止之,Firefox就不會。Firefox的設計原則就是開放,對開發人員十分友好。
SeleniumIDE是Firefox的一款插件,這個插件可以錄制用戶操作,保存下來的是一個指令序列,這個指令序列可以轉換成Java、Python、C#等語言的測試代碼。當不知道某個操作怎么寫時,可以先用SeleniumIDE操作一下並導出代碼,略微改改就能直接用了。

一、進行百度搜索並點擊鏈接

   //WebDriver是一個接口,每一種瀏覽器都有一個實現類(多態)
   WebDriver webDriver = new FirefoxDriver();
   webDriver.manage().window().maximize();
   //與瀏覽器同步非常重要,必須等待瀏覽器加載完畢
   webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
   //下面這句等價於webDriver.navigate().to("www.baidu.com");
   webDriver.get("http://www.baidu.com");
   //在輸入框中填寫要搜索的內容
   WebElement kw = webDriver.findElement(By.id("kw"));
   kw.sendKeys("java用selenium庫控制chrome");
   //點擊搜索按鈕
   WebElement su = webDriver.findElement(By.id("su"));
   su.click();
   webDriver.findElements(By.className("result")).forEach(x -> {
      System.out.println(x.getText());
   });
   //尋找包含weiyinfu的搜索條目
   webDriver.findElement(By.partialLinkText("weiyinfu")).click();
   //webDriver.close();
   System.out.println("Hello World!");

二、新標簽頁打開鏈接

兩種方式,一個原理。原理就是模擬快捷鍵。


/**
 * 原理就是模擬瀏覽器的快捷鍵CTRL+T,
 * 由此可知,通過快捷鍵的方式可以實現的功能,
 * 例如:前進、后退、書簽、收藏等操作都可以實現
 */
public class 新標簽頁打開鏈接 {
static void method1(WebDriver webDriver) {
   Actions actionOpenLinkInNewTab = new Actions(webDriver);
   actionOpenLinkInNewTab.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).perform();
   webDriver.get("http://www.baidu.com");
   actionOpenLinkInNewTab.perform();
   webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
   webDriver.get("http://www.baidu.com");
}

static void method2(WebDriver webDriver) {
   webDriver.get("http://www.baidu.com");
   webDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
   webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[1].toString());
   webDriver.get("http://www.baidu.com");
}

public static void main(String[] args) {
   //設置好瀏覽器驅動器的位置
   System.setProperty("webdriver.gecko.driver",
           "C:\\Users\\weidiao\\Desktop\\geckodriver-v0.16.1-win64\\geckodriver.exe");
   WebDriver webDriver = new FirefoxDriver();
      method1(webDriver);
//   method2(webDriver);
}
}

三、模擬登陸博客園並發表評論

   WebDriver webDriver = new FirefoxDriver();
   //設置默認等待時間,如果沒有發現要找的元素就會默認等待30秒鍾
   webDriver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
   webDriver.get("http://www.cnblogs.com/weidiao");
   webDriver.findElement(By.id("homepage1_HomePageDays_DaysList_ctl01_DayList_TitleUrl_0")).click();
   webDriver.findElement(By.linkText("登錄")).click();
   webDriver.findElement(By.id("input1")).clear();
   webDriver.findElement(By.id("input1")).sendKeys("weiyinfu");
   webDriver.findElement(By.id("input2")).clear();
   webDriver.findElement(By.id("input2")).sendKeys("xxxxxxx");
   webDriver.findElement(By.id("remember_me")).click();
   webDriver.findElement(By.id("signin")).click();
   webDriver.findElement(By.id("tbCommentBody")).sendKeys("現在時間" + new Date());
   webDriver.findElement(By.id("btn_comment_submit")).click();

四、資源

selenium可以驅動好多種瀏覽器
http://www.seleniumhq.org/download/

chromedriver下載地址
https://chromedriver.storage.googleapis.com/index.html?path=2.9/

易百教程
http://www.yiibai.com/selenium/selenium_ide.html#article-start

webdriver中文社區
http://www.webdriver.org/article-26-1.html

一個比較完整的selenium測試教程
http://www.51testing.com/zhuanti/selenium.html

selenium入門
http://www.cnblogs.com/weidiao/p/5930468.html
selenium進階
http://www.cnblogs.com/weidiao/p/5930739.html
HTMLUnit:無頭瀏覽器
http://www.cnblogs.com/weidiao/p/5931339.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM