1. 程式人生 > >手把手教你selenium_第一個指令碼_登入新浪微博

手把手教你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