手把手教你selenium_第一個指令碼_登入新浪微博
假定各位以前看過前兩篇文章,已經搭建好了環境,現在開始錄製回放第一個selenium的指令碼:登入新浪微博
基本的步驟是:
1. 開啟firefox,設定seleniumIDE選項,使之可以錄製下junit的程式碼;
2. 使用seleniumIDE進行錄製,生成程式碼;
3. 設定斷言;
4. 開啟eclipse,建立工程,新建包,包下面建立類,貼入程式碼;
5. 工程引用相關的庫檔案;
6. 除錯:一步步執行回放
第一步:
開啟firefox,設定seleniumIDE選項,使之可以錄製下junit的程式碼;
先在firefox的工具選單中開啟seleniumIDE,然後在seleniumIDE1.4.1視窗中,開啟選單<options-options…>
001.JPG
設定好該項後,就可以錄製出junit的指令碼,否則預設錄製出selenium指令碼,selenium指令碼可以在seleniumIDE中回放,而junit的指令碼就需要匯入ecplise中來執行了。
002.JPG
第二步:使用seleniumIDE進行錄製,生成程式碼;
seleniumIDE點選錄製,在firefox中訪問網址,進行操作,操作完成後,頁面暫時不要關閉,seleniumIDE停止錄製,這時可以看到生成的junit程式碼,記得我們的版本是junit4呀。
package com.example.tests; import com.thoughtworks.selenium.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.regex.Pattern; public class Untitled extends SeleneseTestCase { @Before public void setUp() throws Exception { selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://weibo.com/login.php"); selenium.start(); } @Test public void testUntitled() throws Exception { selenium.open("/login.php"); selenium.click("id=loginname"); selenium.type("id=loginname", "[email protected]"); selenium.type("id=password", "xxx"); selenium.click("css=#login_submit_btn > img"); } @After public void tearDown() throws Exception { selenium.stop(); } } |
第三步:設定斷言
斷言是程式碼級別的稱謂,對於測試就是校驗點,假定以是否出現發微薄的文字框為是否成功登入的校驗點
開啟firebug:
004.JPG
005.JPG
先點選firebug的<點選檢視頁面中的元素>,將滑鼠移動到文字框控制元件上面,會出現浮動的藍色框,點選滑鼠左鍵,如下圖,在文字上右鍵滑鼠,選擇複製XPath,得到該文字框的唯一引用
006.JPG
在點選了登入按鈕後,新增加一句:
assertTrue(selenium.isElementPresent("xpath=/html/body/div/div[2]/div/div/div/div/div/div[4]/div/div/textarea"));
斷言是什麼?要不先翻翻手冊吧。
第四步:開啟eclipse,建立工程,新建包,包下面建立類,貼入程式碼;
建立工程:File—New—Projects…--java projects—專案名稱:prjSelenium1—Finish
建立包:如下圖選擇上新建的專案-- File—New—Package—包名:pkgTest
007.JPG:
類似上圖,選擇上包-- File—New—Class—類名:ClsTest—finish
把之前的程式碼貼入ClsTest.java,修改下面標粗的內容:
package pkgTest; import com.thoughtworks.selenium.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.regex.Pattern; public class ClsTest extends SeleneseTestCase { @Before public void setUp() throws Exception { selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://weibo.com/login.php"); selenium.start(); } @Test public void testUntitled() throws Exception { selenium.open("/login.php"); selenium.click("id=loginname"); selenium.type("id=loginname", "[email protected]"); selenium.type("id=password", "xxx"); selenium.click("css=#login_submit_btn > img"); assertTrue(selenium.isElementPresent("xpath=/html/body/div/div[2]/div/div/div/div/div/div[4]/div/div/textarea")); } @After public void tearDown() throws Exception { selenium.stop(); } } |
將包名和類名改的和新建的一致
第五步:工程引用相關的庫檔案;
可以看到現在的程式碼全是紅槓槓,那是因為找不到相應的庫。
選擇專案名,右鍵選擇屬性,按照下圖設定:
008.JPG
此處的庫檔案包括了前文下載的<Selenium Client Drivers,SeleniumRC,JDK1.6>相關的jar包。
三類jar包分別是模擬客戶端,模擬伺服器端(細節請看Selenium私房菜(新手入門教程).pdf),虛擬機器。
很快程式碼的紅槓槓就沒了,有些變成了黃槓槓,都是建議的,可以不用管他。
第六步:除錯:一步步執行回放
首先需要啟動seleniumRC,我自己建立了一個批處理,大家可以參考:
F: cd F:\TOOL\java\prjSelenium\seleniumRC java -jar selenium-server-standalone-2[1].12.0.jar |
服務啟動完成後(啟動後啥樣子,前一篇文章已經講過),在程式碼上設定一個斷點,游標停留在需要中斷的語句處,按下ctrl+shift+b,由於旁邊有黃色標記擋住了,有點看不出來是否設定成功了,仔細看看,會發現有那麼幾個象素點的變化的。我把斷點設定在了< selenium.start();>。現在可以清理一下環境了,關閉firefox和seleniumIDE(當然你喜歡亂點也無所謂),選擇ClsTest.java,右鍵選擇Debug As—Junit Test,程式碼就開始運行了,停在了斷點處,後續就什麼F5,F6,F7(到時候看看ecplise的Run選單)啥的往後一步步執行了。
好了,看看最後效果如何:
009.JPG
期間可能會遇到的問題:
問題1: java.lang.RuntimeException: Could not contact Selenium Server; have you started it on 'localhost:4444' ? Read more at http://seleniumhq.org/projects/remote-control/not-started.html Connection refused: connect 解決方法:執行前需要先啟動seleniumRC,編寫批處理: F: cd F:\TOOL\java\prjSelenium\seleniumRC java -jar selenium-server-standalone-2[1].12.0.jar |
問題2: java.lang.NoClassDefFoundError: com/google/common/base/Charsets 解決方法:新增:selenium-server-standalone-2[1].12.0.jar |
問題3: java.lang.RuntimeException: Could not start Selenium session: Failed to start new browser session: java.lang.RuntimeException: Firefox 3 could not be found in the path! Please add the directory containing ''firefox.exe'' to your PATH environment variable, or explicitly specify a path to Firefox 3 like this: *firefox3 c:\blah\firefox.exe 解決方法: 我的電腦-屬性-高階-環境變數-系統變數-PATH PATH=$PATH;D:\Program Files\Mozilla Firefox\ 需要重新啟動一次eclipse |
That’s All. God bless u!
相關推薦
手把手教你selenium_第一個指令碼_登入新浪微博
假定各位以前看過前兩篇文章,已經搭建好了環境,現在開始錄製回放第一個selenium的指令碼:登入新浪微博 基本的步驟是: 1. 開啟firefox,設定seleniumIDE選項,使之可以錄製下junit的程式碼; 2. 使用seleniumIDE進行錄製,
4分鐘手把手教你做出第一個微信小程式
關於如何開發自己第一個程式,上一篇我釋出了圖文版本,有的閣友自己說沒能實現,我也擔心看圖實在會讓大家感覺不直觀,所以我花了點時間做了一個教學視訊,希望能繼續幫助到對微信小程式感興趣的人。用了愛剪輯稍微做
[原]手把手教你appium_第一個示例日誌解讀
1. 啟動一個http伺服器:127.0.0.1:4723 2. 根據測試程式碼setUp()進行初始化,在http伺服器上建立一個session物件; 3. 開始呼叫adb,找到連線上的裝置,設定裝置id 猜測:這次我只連線了一個模擬器,如果還有多個裝置呢,在第二篇文章中是命令列啟動的,使用了-U
手把手教您編寫第一個微控制器程式
51微控制器的開發環境是Keil 軟體。Keil 軟體雖然是一個收費軟體,但從uVision2到目前的uVison4版本都有破解版,在網上都可以找到下載。筆者推薦大家使用uVisong4破解版本,好處不用多說。Keil uVision4軟體的壓縮包裡附有安裝和破解說明,本文不再贅述。 開發一個微控制器程式,
[C++]多執行緒: 教你寫第一個執行緒
hello thread! 宣告執行緒A的埠號 #include <pthread.h> pthread_t tid; 定義執行緒執行函式 void thread_function(void *args) { printf("th
MapReduce程式設計 一步步地教你開啟 第一個程式wordcount
例項描述 計算出檔案中每個單詞的頻數,要求輸出結果按照單詞的字母順序進行排序,按照key-value格式輸出結果。 比如輸入檔案為: hello world hello hadoop hello mapreduce
傻瓜教程:手把手教你解決多個應用例項(附程式碼、手繪圖)
// Reminder: this is pseudocode, no bother with "const&", "std::" or others// forgive me C++ fellowstemplate <typename BlaBla>class BST{public:
手把手教你如何玩轉單點登入(SSO)
情景引入 小白:起床起床起床。。。。。。快起床 我:怎麼怎麼了。。。又怎麼了? 小白:最近,我發現了一個奇怪的事情~! 我:說收,什麼奇怪的事情了呢? 小白:我前些天,我逛了逛新浪部落格,然後看了看裡面的內容,感覺還挺不錯的。可是,關鍵讓我覺得不可思議
在Android中使App高速、簡單地支持新浪微博、微信、QQ、facebook等十幾個主流社交平臺的分享功能
分析 ont renren androidm mod 執行 xen 12px 操作 前言 在如今的APP或者遊戲中,分享功能差點兒已經成為標配。分享功能不但能夠滿足用戶的需求。也能夠為產品帶來很多其它的用戶,甚至能夠對用戶的行為、活躍度、年齡段等情況進行數據統計,使得軟
在Android中使App快速 簡單地支援新浪微博 微信 QQ facebook等十幾個主流社交平臺的分享功能
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Scrapy爬取新浪微博移動版使用者首頁第一條微博
大家好,本月第一次更新。 最近找了一份關於爬蟲的實習工作,需要爬取較大量的資料,這時就發現通過自己編寫函式來實現爬蟲效率太慢了;於是又轉回來用scrapy,以前稍微學習了一下,這次剛好爬爬微博練練手,而後再使用部分資料生成詞雲。 本次爬取的是新浪微博移動端(https://m.weibo.cn/),爬取的
小程序初體驗:手把手教你寫出第一個小程序(一)
輸入框 個人 創建 公測 快速 nsh 成功 too 調用 本文筆者將根據quick start中的範例代碼,帶大家簡單地剖析一下小程序的運行方式,並介紹小程序開發中一些通用的特性,帶著大家一步步寫出自己的小程序。 適用對象:前端初學者,對小程序開發感興趣者 tip
讓個MVP還贏對手39分!聯盟第一手把手教你虐菜
@央廣軍事11月10日訊息,2018中國航展上首次公開展出的“瞭望者Ⅱ”察打一體導彈無人艇,是剛剛成功進行首發導彈飛行試驗命中靶心的實艇,試驗成功後隨即吊裝到展位與公眾見面。據媒體此前報道,該艇是中國第一艘導彈無人艇,也是繼以色列拉斐爾海上騎士後全球第二個成功發射導彈的無人艇,填補了國內導彈無人艇這一技術空白
實現你的第一個鏈表——手把手教你創建單向鏈表
linked 中一 語句 c語言實現 create 結點之間 現在 引入 什麽 寫在前面 這是我原發在獨立博客上的文章,用來幫助初學鏈表的同學們理解鏈表,現在發在這裏供大家批評。 為什麽要使用鏈表? 這是我們首先要考慮的一個問題,我們之前已經學過了數組的使用,可以方便快速地
實現你的第一個連結串列——手把手教你建立單向連結串列
寫在前面 這是我原發在獨立部落格上的文章,用來幫助初學連結串列的同學們理解連結串列,現在發在這裡供大家批評。 為什麼要使用連結串列? 這是我們首先要考慮的一個問題,我們之前已經學過了陣列的使用,可以方便快速地儲存大量資料,為何還要引入“連結串列”的概念呢? 比如我們讓50個小朋友排排坐,那事情是很好辦
手把手教你uiautomator_android自動化測試第一個示例
android的自動化測試方案,弄了好久了。 Google在sdk4.0以後提供了一個自動化解決方案uiautomator: 優點:可以跨應用了;這可是親生的; 缺點:必須sdk4.0以上版本;要想實現的好,最好有開發配合;java專案編譯為jar後需要push
手把手教你在STM32下搭建屬於自己的第一個應用程式
準備資料: 下載STM32F10x_StdPeriph_Lib_V3.5.0韌體庫。如下圖: 下載後解壓,可以看到如下目錄: 開始搭建: 1、 在桌面建立一個資料夾,命名為STM32_TEST(此名字可隨意命名),然
手把手教你_怎麽找android應用的包名和啟動activity
color don dsm too key 包名 ani 一個 col 自己主動化測試中常常遇到這個問題,關於這個題目,方法眾多,咱的目的是找個比較簡單靠譜的: 方法一: 先進入cmd窗體,adb shell 後: cd /data/d
Swing:LookAndFeel 教程第一篇——手把手教你寫出自己的 LookAndFeel
畢業 lean 能開 AC alc 我不 cli private 基礎 本文是 LookAndFeel 系列教程的第一篇。 是我在對 Swing 學習摸索中的一些微
第一節:學會Java前提-手把手教你配置JDK環境變量
ini 按鈕 download 鏈接 理解 驗證 rac win鍵 當前 前言 大家好,今天寫一遍學會Java前提-手把手教你配置JDK環境變量的概述,希望你們喜歡 下載地址 下載jdk,和eclipse就比較簡單了,提供JDK 9 地址: http://www.oracl