整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          在 Linux 中如何移動文件

          論你是剛接觸 Linux 的文件移動的新手還是已有豐富的經(jīng)驗,你都可以通過此深入的文章中學(xué)到一些東西。

          -- Seth Kenlon(作者)

          在 Linux 中移動文件看似比較簡單,但是可用的選項卻比大多數(shù)人想象的要多。本文介紹了初學(xué)者如何在 GUI 和命令行中移動文件,還介紹了底層實際上發(fā)生了什么,并介紹了許多有一定經(jīng)驗的用戶也很少使用的命令行選項。

          移動什么?

          在研究移動文件之前,有必要仔細研究移動文件系統(tǒng)對象時實際發(fā)生的情況。當文件創(chuàng)建后,會將其分配給一個 索引節(jié)點(inode),這是文件系統(tǒng)中用于數(shù)據(jù)存儲的固定點。你可以使用 ls 命令看到文件對應(yīng)的索引節(jié)點:

          $ ls --inode example.txt
          7344977 example.txt
          

          移動文件時,實際上并沒有將數(shù)據(jù)從一個索引節(jié)點移動到另一個索引節(jié)點,只是給文件對象分配了新的名稱或文件路徑而已。實際上,文件在移動時會保留其權(quán)限,因為移動文件不會更改或重新創(chuàng)建文件。(LCTT 譯注:在不跨卷、分區(qū)和存儲器時,移動文件是不會重新創(chuàng)建文件的;反之亦然)

          文件和目錄的索引節(jié)點并沒有暗示這種繼承關(guān)系,而是由文件系統(tǒng)本身決定的。索引節(jié)點的分配是基于文件創(chuàng)建時的順序分配的,并且完全獨立于你組織計算機文件的方式。一個目錄“內(nèi)”的文件的索引節(jié)點號可能比其父目錄的索引節(jié)點號更低或更高。例如:

          $ mkdir foo
          $ mv example.txt foo
          $ ls --inode
          7476865 foo
          $ ls --inode foo
          7344977 example.txt
          

          但是,將文件從一個硬盤驅(qū)動器移動到另一個硬盤驅(qū)動器時,索引節(jié)點基本上會更改。發(fā)生這種情況是因為必須將新數(shù)據(jù)寫入新文件系統(tǒng)。因此,在 Linux 中,移動和重命名文件的操作實際上是相同的操作。無論你將文件移動到另一個目錄還是在同一目錄使用新名稱,這兩個操作均由同一個底層程序執(zhí)行。

          本文重點介紹將文件從一個目錄移動到另一個目錄。

          用鼠標移動文件

          圖形用戶界面是大多數(shù)人都熟悉的友好的抽象層,位于復(fù)雜的二進制數(shù)據(jù)集合之上。這也是在 Linux 桌面上移動文件的首選方法,也是最直觀的方法。從一般意義上來說,如果你習(xí)慣使用臺式機,那么你可能已經(jīng)知道如何在硬盤驅(qū)動器上移動文件。例如,在 GNOME 桌面上,將文件從一個窗口拖放到另一個窗口時的默認操作是移動文件而不是復(fù)制文件,因此這可能是該桌面上最直觀的操作之一:


          Moving a file in GNOME.

          而 KDE Plasma 桌面中的 Dolphin 文件管理器默認情況下會提示用戶以執(zhí)行不同的操作。拖動文件時按住 Shift 鍵可強制執(zhí)行移動操作:


          Moving a file in KDE.


          在命令行移動文件

          用于在 Linux、BSD、Illumos、Solaris 和 MacOS 上移動文件的 shell 命令是 mv。不言自明,簡單的命令 mv <source> <destination> 會將源文件移動到指定的目標,源和目標都由 絕對 或 相對 文件路徑定義。如前所述,mv 是 POSIX 用戶的常用命令,其有很多不為人知的附加選項,因此,無論你是新手還是有經(jīng)驗的人,本文都會為你帶來一些有用的選項。

          但是,不是所有 mv 命令都是由同一個人編寫的,因此取決于你的操作系統(tǒng),你可能擁有 GNU mv、BSD mv 或 Sun mv。命令的選項因其實現(xiàn)而異(BSD mv 根本沒有長選項),因此請參閱你的 mv 手冊頁以查看支持的內(nèi)容,或安裝你的首選版本(這是開源的奢侈之處)。

          移動文件

          要使用 mv 將文件從一個文件夾移動到另一個文件夾,請記住語法 mv <source> <destination>。 例如,要將文件 example.txt 移到你的 Documents 目錄中:

          $ touch example.txt
          $ mv example.txt ~/Documents
          $ ls ~/Documents
          example.txt
          

          就像你通過將文件拖放到文件夾圖標上來移動文件一樣,此命令不會將 Documents 替換為 example.txt。相反,mv 會檢測到 Documents 是一個文件夾,并將 example.txt 文件放入其中。

          你還可以方便地在移動文件時重命名該文件:

          $ touch example.txt
          $ mv example.txt ~/Documents/foo.txt
          $ ls ~/Documents
          foo.txt
          

          這很重要,這使你不用將文件移動到另一個位置,也可以重命名文件,例如:

          $ touch example.txt 
          $ mv example.txt foo2.txt 
          $ ls foo2.txt`
          

          移動目錄

          不像 cp 命令,mv 命令處理文件和目錄沒有什么不同,你可以用同樣的格式移動目錄或文件:

          $ touch file.txt
          $ mkdir foo_directory
          $ mv file.txt foo_directory
          $ mv foo_directory ~/Documents
          

          安全地移動文件

          如果你移動一個文件到一個已有同名文件的地方,默認情況下,mv 會用你移動的文件替換目標文件。這種行為被稱為 清除(clobbering),有時候這就是你想要的結(jié)果,而有時則不是。

          一些發(fā)行版將 mv 別名定義為 mv --interactive(你也可以 自己寫一個 ),這會提醒你確認是否覆蓋。而另外一些發(fā)行版沒有這樣做,那么你可以使用 --interactive 或 -i 選項來確保當兩個文件有一樣的名字而發(fā)生沖突時讓 mv 請你來確認。

          $ mv --interactive example.txt ~/Documents
          mv: overwrite '~/Documents/example.txt'?
          

          如果你不想手動干預(yù),那么可以使用 --no-clobber 或 -n。該選項會在發(fā)生沖突時靜默拒絕移動操作。在這個例子當中,一個名為 example.txt 的文件以及存在于 ~/Documents,所以它不會如命令要求從當前目錄移走。

          $ mv --no-clobber example.txt ~/Documents
          $ ls
          example.txt
          

          帶備份的移動

          如果你使用 GNU mv,有一個備份選項提供了另外一種安全移動的方式。要為任何沖突的目標文件創(chuàng)建備份文件,可以使用 -b 選項。

          $ mv -b example.txt ~/Documents
          $ ls ~/Documents
          example.txt example.txt~
          

          這個選項可以確保 mv 完成移動操作,但是也會保護目錄位置的已有文件。

          另外的 GNU 備份選項是 --backup,它帶有一個定義了備份文件如何命名的參數(shù)。

          • existing:如果在目標位置已經(jīng)存在了編號備份文件,那么會創(chuàng)建編號備份。否則,會使用 simple 方式。
          • none:即使設(shè)置了 --backup,也不會創(chuàng)建備份。當 mv 被別名定義為帶有備份選項時,這個選項可以覆蓋這種行為。
          • numbered:給目標文件名附加一個編號。
          • simple:給目標文件附加一個 ~,當你日常使用帶有 --ignore-backups 選項的 ls 時,這些文件可以很方便地隱藏起來。

          簡單來說:

          $ mv --backup=numbered example.txt ~/Documents
          $ ls ~/Documents
          -rw-rw-r--. 1 seth users 128 Aug 1 17:23 example.txt
          -rw-rw-r--. 1 seth users 128 Aug 1 17:20 example.txt.~1~
          

          可以使用環(huán)境變量 VERSION_CONTROL 設(shè)置默認的備份方案。你可以在 ~/.bashrc 文件中設(shè)置該環(huán)境變量,也可以在命令前動態(tài)設(shè)置:

          $ VERSION_CONTROL=numbered mv --backup example.txt ~/Documents
          $ ls ~/Documents
          -rw-rw-r--. 1 seth users 128 Aug 1 17:23 example.txt
          -rw-rw-r--. 1 seth users 128 Aug 1 17:20 example.txt.~1~
          -rw-rw-r--. 1 seth users 128 Aug 1 17:22 example.txt.~2~
          

          --backup 選項仍然遵循 --interactive 或 -i 選項,因此即使它在執(zhí)行備份之前創(chuàng)建了備份,它仍會提示你覆蓋目標文件:

          $ mv --backup=numbered example.txt ~/Documents
          mv: overwrite '~/Documents/example.txt'? y
          $ ls ~/Documents
          -rw-rw-r--. 1 seth users 128 Aug 1 17:24 example.txt
          -rw-rw-r--. 1 seth users 128 Aug 1 17:20 example.txt.~1~
          -rw-rw-r--. 1 seth users 128 Aug 1 17:22 example.txt.~2~
          -rw-rw-r--. 1 seth users 128 Aug 1 17:23 example.txt.~3~
          

          你可以使用 --force 或 -f 選項覆蓋 -i。

          $ mv --backup=numbered --force example.txt ~/Documents
          $ ls ~/Documents
          -rw-rw-r--. 1 seth users 128 Aug 1 17:26 example.txt
          -rw-rw-r--. 1 seth users 128 Aug 1 17:20 example.txt.~1~
          -rw-rw-r--. 1 seth users 128 Aug 1 17:22 example.txt.~2~
          -rw-rw-r--. 1 seth users 128 Aug 1 17:24 example.txt.~3~
          -rw-rw-r--. 1 seth users 128 Aug 1 17:25 example.txt.~4~
          

          --backup 選項在 BSD mv 中不可用。

          一次性移動多個文件

          移動多個文件時,mv 會將最終目錄視為目標:

          $ mv foo bar baz ~/Documents
          $ ls ~/Documents
          foo bar baz
          

          如果最后一個項目不是目錄,則 mv 返回錯誤:

          $ mv foo bar baz
          mv: target 'baz' is not a directory
          

          GNU mv 的語法相當靈活。如果無法把目標目錄作為提供給 mv 命令的最終參數(shù),請使用 --target-directory 或 -t 選項:

          $ mv --target-directory=~/Documents foo bar baz
          $ ls ~/Documents
          foo bar baz
          

          當從某些其他命令的輸出構(gòu)造 mv 命令時(例如 find 命令、xargs 或 GNU Parallel ),這特別有用。

          基于修改時間移動

          使用 GNU mv,你可以根據(jù)要移動的文件是否比要替換的目標文件新來定義移動動作。該方式可以通過 --update 或 -u 選項使用,在BSD mv 中不可用:

          $ ls -l ~/Documents
          -rw-rw-r--. 1 seth users 128 Aug 1 17:32 example.txt
          $ ls -l
          -rw-rw-r--. 1 seth users 128 Aug 1 17:42 example.txt
          $ mv --update example.txt ~/Documents
          $ ls -l ~/Documents
          -rw-rw-r--. 1 seth users 128 Aug 1 17:42 example.txt
          $ ls -l
          

          此結(jié)果僅基于文件的修改時間,而不是兩個文件的差異,因此請謹慎使用。只需使用 touch 命令即可愚弄 mv:

          $ cat example.txt
          one
          $ cat ~/Documents/example.txt
          one
          two
          $ touch example.txt
          $ mv --update example.txt ~/Documents
          $ cat ~/Documents/example.txt
          one
          

          顯然,這不是最智能的更新功能,但是它提供了防止覆蓋最新數(shù)據(jù)的基本保護。

          移動

          除了 mv 命令以外,還有更多的移動數(shù)據(jù)的方法,但是作為這項任務(wù)的默認程序,mv 是一個很好的通用選擇。現(xiàn)在你知道了有哪些可以使用的選項,可以比以前更智能地使用 mv 了。


          via: https://opensource.com/article/19/8/moving-files-linux-depth

          作者: Seth Kenlon 選題: lujun9972 譯者: wxy 校對: wxy

          本文由 LCTT 原創(chuàng)編譯, Linux中國 榮譽推出

          點擊“了解更多”可訪問文內(nèi)鏈接

          、HTML簡介

          1.HTML是什么?

          HTML:htper text markup language超文本標記(標簽)語言

          由各種標簽組成,用來制作網(wǎng)頁,告訴瀏覽器如何顯示頁面

          2.作用

          • 制作網(wǎng)頁,控制網(wǎng)頁和內(nèi)容的顯示
          • 插入圖片、音樂、視頻、動畫等多媒體
          • 通過鏈接來檢索信息
          • 使用表單獲取用戶的信息,實現(xiàn)交互

          3.版本

          w3c:world wide web consortium萬維網(wǎng)聯(lián)盟,制定web技術(shù)相關(guān)標準和規(guī)范的組織,HTML技術(shù)hi由w3c制定的標準

          兩個版本:HTML4.0.1、HTML5.0-----通常H5

          官網(wǎng):http://www.W3shcool.com.cn

          4.擴展名

          HTML文檔是以.html或.htm結(jié)尾

          二、HTML文檔結(jié)構(gòu)

          1.基本結(jié)構(gòu)

          1.1簡介

          • HTML標簽是由尖括號括起來的關(guān)鍵詞,如,通常是成對出現(xiàn)的,如<html></html>
          • <html>為根標簽,包含: <head>頭部和<body>主體部分
          • 頭部提供關(guān)于網(wǎng)頁的相關(guān)信息,如標題、文檔類型、字符編碼、關(guān)鍵字等摘要信息
          • 主體部分提供網(wǎng)頁的顯示內(nèi)容,真正顯示在頁面中的內(nèi)容
          • 合理地進行縮進
          • 標簽名不區(qū)分大小寫,但是一般要用小寫

          1.2.開發(fā)工具

          記事本notepad、sublime、Notepad++、Dreamweaver、VScode、Webstorm等

          使用步驟:

          1. 新建文件(cltr+N),然后保存(ctrl+s),指定擴展名為.html
          2. 編寫HTML代碼
          3. 在瀏覽器中打開文件

          使用技巧:

          • 先保存再寫代碼,否則代碼無顏色提示
          • 創(chuàng)建一個文件夾,用于保存所有的網(wǎng)頁內(nèi)容,將文件夾拖拽到sublime中,便于管理
          • 顯示/隱藏側(cè)邊欄方式1:查看–>側(cè)邊欄–>顯示/隱藏側(cè)邊欄方式2:ctrl+K緊接著按B
          • 顯示多欄方式1:查看–>布局–>列數(shù):2列方式2:Alt+shift+2

          1.3瀏覽器

          常見的瀏覽器:IE瀏覽器微軟、chrome谷歌瀏覽器、fifirefox火狐、safari蘋果

          瀏覽器的作用是讀取html文件,并以網(wǎng)頁的形式來顯示

          瀏覽器不會直接顯示html標簽,而是使用標簽來解釋網(wǎng)頁的內(nèi)容

          2.標簽

          2.1標簽的組成

          一個完整的html標簽的組成:

          <標簽名 屬性名="屬性值">內(nèi)容</標簽名>

          <!DOCTYPE html>
          <html lang="en">
          	<head>
          		<meta charset="UTF-8">
          		<title>標簽</title>
          	</head>
          	<body  bgcolor="red" text="blue">
          		html從入門到精通!
              </body>
          </html>
          12345678910

          屬性值要用雙撇號括起來,一般用雙引號

          2.2標簽的分類

          根據(jù)標簽是否關(guān)閉,分為,關(guān)閉型和非關(guān)閉型

          • 關(guān)閉型:有結(jié)束標簽,即標簽成對出現(xiàn)
          <html></html>
          <head></head>
          <title></title>

          非關(guān)閉型:沒有結(jié)束標簽

          <meta>
          <br>
          <h1>....<h6>

          根據(jù)標簽是否獨占一行,分為塊級標簽和行級標簽

          塊級標簽:顯示為塊狀,獨占一行

          <h1>大家好</h1>
          <hr>

          行級標簽:在行內(nèi)顯示,可與其他內(nèi)容在同一行顯示

          <span></span>

          2.3注釋

          注釋在瀏覽器中不會顯示,是用來標注解釋html語句,但通過查看源代碼的方式可以看到

          語法:

          <--注釋內(nèi)容-->

          2.4實體字符

          也稱為特殊字符,用于顯示一些特殊符號,如<>&空格等

          語法:

          <&實體字符的名稱>

          2.5文檔類型

          在html文檔的第一行,使用<!DOCTYPE html>

          聲明HTML文檔的類型用來告訴瀏覽器頁面的文檔嘞型,用來制定html版本的規(guī)范

          目前基本上最常用的html5

          <!DOCTYPE html>
          <html lang="en">
          <head>
          	<meta charset="UTF-8">
          	<title>Document</title>
          </head>
          <body>
          	
          </body>
          </html>
          12345678910

          三\常用標簽

          3.1基本標簽

          • 塊級標簽\親啊后有明顯的間隔 |
            | h1…h(huán)5 | 標題標簽 | 按照h1到h6逐漸變小.塊級標簽 |
            | | | |
            | | | |


          • 三、常用標簽

          1.基本標簽

          1.1 有序列表
          ol:ordered listli:list item默認使用阿拉伯數(shù)字、從1開始標記,可以通過屬性進行修改
          · type屬性:設(shè)置列表的符號標記、取值;數(shù)字1(默認)、字母(a或A)、羅馬數(shù)字(i或I) · start屬性:設(shè)置起始值,值必須是數(shù)字
          1.2 無序列表
          ul:unodered list
          li:list item
          默認情況下使用實心圓表作為符號標記,可以通過屬性進行修改
          · type屬性:設(shè)置列表的符號標記、取值:disc實心圓(默認)、circle空心圓、square正方形、none不 顯示項目符號
          1.3 定義列表
          dl:definition list
          dt:definition title
          dd:definition description
          1.4 水平線標簽
          hr:horizontal
          常用屬性:
          · color:顏色

          兩種方式:

          顏色名稱:如red、green、blue、white、black、pink、orange等

          16進制的RGB表示法:Red、Green、Blue用法:#RRGGBB 每種顏色的取值范值0-255,轉(zhuǎn)換為16 進制00-FF

          如: #FF0000 紅色 #00FF00綠色 #0000FF藍色 #FFFFFF白色、#CCCCCC #FF7300桔色

          · size:粗細,數(shù)值

          · width寬度

          兩種寫法:

          ? 像素:絕對值(固定值)

          ? 百分比:相對值,相對于水平線標簽所在父容器寬度的百分比

          · align對齊

          ? 取值:center居中 left right
          1.5圖像標簽
          img:image
          常見的圖片格式:.jpg .png .gif .bmp
          常見的屬性:
          · src:source指定圖片的路徑(來源),必選叁數(shù)

          如果圖片與html源代碼在同一個文件夾中,可以直接在src中寫圖片名稱即可

          習(xí)慣上,我們會將多個圖片與html代碼文檔分別放在同一個文件夾project中的不同目錄下,此時需要 在src中指定圖片的路徑為相對路徑

          路徑的分類:

          ? · 相對路徑

          ? 表示: ./當前路徑
          …/當前位置的上一級文件夾

          ? 提示:…/image

          ? · alt:當圖片無法顯示時顯示的提示信息

          ? · title:當鼠標放到圖片上時顯示的提示信息

          ? · width和 height:設(shè)置圖片的寬度和高度
          默認圖片以原始尺寸顯示

          ? 如果只設(shè)置其中一個,則另一個會按比例縮放

          ? 如果同時設(shè)置寬和高,可能導(dǎo)致圖片變形

          ? 兩種寫法:

          ? 像素:絕對值(固定值)

          ? 百分比:相對值,相對于父容器的尺寸的百分比
          2.其他標簽

          為了更好語義化
          3.頭部標簽
          · meta定義網(wǎng)頁的摘要信息,如字符編碼,關(guān)鍵詞,描述,作者等
          · title定義網(wǎng)頁的標題
          · style定義內(nèi)容css樣式
          · link引用外部css樣式
          · script定義或引用腳本
          · base定義基礎(chǔ)路徑
          默認以當前頁面文件所在的位置為相對路徑參照
          4.標簽嵌套
          一個標簽中嵌套另外一個標簽
          標簽不能亂嵌套
          瀏覽器渲染后顯示的頁面代碼與編碼時有所不同
          chrome瀏覽器提供的開發(fā)工具:幫助開發(fā)人員查看和調(diào)試頁面的
          如何打開:
          · Elements:從瀏覽器的角度來看頁面,瀏覽器渲染頁面時內(nèi)部的結(jié)構(gòu)
          · console:控制臺,顯示各種警告和錯誤信息
          · network:查看網(wǎng)絡(luò)請求信息,瀏覽器向服務(wù)器請求了哪些資源,資源大小,
          加載資源所消耗的時間

          四、超鏈接
          1.簡介
          使用超鏈接可以從一個頁面跳轉(zhuǎn)到另外一個頁面,實現(xiàn)頁面之間導(dǎo)航
          當鼠標移動到超鏈接文本或圖片時,鼠標箭頭會變成一只小手
          超鏈接有三種類型:
          普通鏈接/頁面間的鏈接,跳轉(zhuǎn)到另一個頁面 錨鏈接:鏈接到錨點(鏈接到同一個頁面的指定位置) 功能鏈接:實現(xiàn)特殊功能(發(fā)郵件,下載)
          2.基本用法
          使用 標簽來創(chuàng)建超鏈接
          語法格式:

          常用屬性:
          href:鏈接地址或路徑,鏈接地址

          world

          鏈接文本或圖片

          1 2 3 4 5 1 target:鏈接打開的位置,取值

          路徑分類:
          絕對路徑 以根開始的路徑
          file:///D:/software/b.html https://www.baidu.com/img/bd_logo1.png
          相對路徑 相對于當前頁面文件所在的路徑,不是以根開始的路徑 ./ 當前路徑 …/ 當前位置上一級目錄

          3.錨鏈接
          3.1簡介
          點擊鏈接后跳轉(zhuǎn)到某一個頁面的指定位置(錨點anchor)
          錨鏈接的分類:
          頁面內(nèi)的錨鏈接 頁面間的錨鏈接
          3.2 頁面內(nèi)的錨鏈接
          步驟:

          1. 定義錨點(標記)
          2. 鏈接錨點
            _self 自身,當前,默認值 _blank新的,空白的 _parent父層框架 _top頂層框架
            目標位置
            1 2 3 4
            1

          3.3 頁面間的錨鏈接

          4.功能鏈接
          5.URL
          5.1 簡介
          URL:Uniform Resource Locator 統(tǒng)一資源定位器,用來定位資源所在的位置,最常見的就是網(wǎng)址

          5.2 組成
          一個完整的URL由8個部分組成:
          協(xié)議:prococol 如 http:超文本傳輸協(xié)議,用來訪問WEB網(wǎng)站Hyper text Transfer protocal https:更加安全的協(xié)議 SSL安全套接子層 ftp文件傳輸協(xié)議,用來訪問服務(wù)器上的文件,實現(xiàn)文件的上傳和下載File Transfer protocol file:文件協(xié)議,用來訪問本地文件 主機名hostname服務(wù)器地址或服務(wù)器Netbios名稱,如www.baidu.com ftp://10.255.254.254 端口:port位于主機名的后面,使用冒號進行分隔 不同的協(xié)議使用不同的端口,如http使用80端口,https使用的443端口,ftp使用20和21 如果使用的是默認端口,則端口可以省略 如果使用的不是默認端口,則必須指定端口http://59.49.32.213:7070/ 路徑:path目標文件所在的路徑結(jié)構(gòu),如:www.baidu.com/img/ 資源resource要訪問的目標文件,如bd_logo1.png 查詢字符串:query string 也稱為參數(shù) 在資源后面使用?開頭的一組名稱/值
          鏈接文本
          鏈接文本
          https://www.baidu.com/img/bd_logo1.png?name=tom&age=2&sex=male https://www.w3school.com.cn/html/html_quotation_elements.asp file:///C:/Users/Administrator/Desktop/project/code/09.%E5%B8%B8%E7%94%A8%E6%A0%87%E7%A D%BE3.html http://www.sxgjpx.net/ ftp://10.255.254.253/
          1
          1
          1 2 3
          4 5
          名稱和值之間以=分隔,多個之間用&分隔,如:name=tom&age=2&sex=male 錨點anchor,在資源后面使用#開頭的文本,如#6 身份認證authentication,指定身份信息,如:ftp://賬戶:密碼@ftp.bbshh010.com
          五、表格
          1.簡介
          表格是一個規(guī)則的行列結(jié)構(gòu),每個表格是由若干行組成,每行由若干個單元格組成
          table row column
          2.基本結(jié)構(gòu)
          2.1 table標簽
          用來定義表格
          常用屬性:
          border:表格邊框 默認為0 width/height:寬度/高度 bordercolor:邊框的顏色 align:對齊方式,取值:left(默認) center居中 right居右 bgcolor:背景顏色 background:背景圖片 cellspacing間距:單元格與單元格之間的距離 cellpadding邊距:單元格中的內(nèi)容到邊界之間的距離
          2.2 tr標簽
          用來定義行:table row
          常用屬性:
          align:水平對齊 取值:left(默認) center right valign垂直對齊 取值:top center bottom bgcolor:背景顏色 background:背景圖片
          2.3 td標簽
          用來定義單元格,table data
          常用屬性:align、valign、bgcolor、background
          注意:表格必須是由行組成,行必須由單元格來組成,數(shù)據(jù)必須放到單元格中
          3.合并單元格
          合并單元格也稱為單元格的跨行跨列
          兩個屬性:
          rowspan 設(shè)置單元格所跨的行數(shù) colspan 設(shè)置單元格所跨的列數(shù)
          步驟:

          1. 在跨越的單元格中設(shè)置rowspan/colspan屬性 2. 將被跨越的單元格刪除
            必須要保證每行的實際列數(shù)是相同的,否則表格可能會出錯亂
            4.高級標簽
            4.1caption標簽
            表格的標題標簽
            4.2thead標簽
            表格的頭部table head
            4.3th標簽
            表格的頭部標題table head title
            一般用在thead中,設(shè)置頭部的標題,替代td標簽,與td的區(qū)別,th中的文本會加粗且居中顯示
            4.4tbody標簽
            表格的主體table body
            4.5tfoot標簽
            表格的底部table foot




          六、表單
          1.簡介
          表單是一個包含若干個表單元素的區(qū)域,用于獲取瑣類型的用戶數(shù)據(jù)

          表單元素是允許用戶在表單輸入信息的元素,如文本框、密碼框、單選按鈕、復(fù)選框、下拉列表、按鈕等
          2.表單結(jié)構(gòu)
          2.1表單語法

          1

          2.2form標簽
          用來定義表單,可以包含多個表單元素
          常用屬性:
          action:提交數(shù)據(jù)給誰處理,即處理數(shù)據(jù)的程序,默認為當前頁面 method:提交數(shù)據(jù)的方式或方法,取值:get(默認),post get和post的區(qū)別: get:以查詢字符串的形式提交,在地址欄中能看到,長度有限制,不安全 post以表單數(shù)據(jù)組的形式進行提交,在地址欄中看不到,長度無限制,安全 enctype(encode type)編碼類型:提交數(shù)據(jù)的編碼,取值:application/X-www-form-urlencoded(默 認)、multipart/form-data(文件上傳)
          3.表單元素
          大多數(shù)的表單元素都是使用 標簽來定義的,通過設(shè)置屬性type來定義不同的表單元素

          1

          3.1單行文本框
          常用屬性:
          ·name名稱,很重要,如果沒有定義name屬性,則該表單元素的數(shù)據(jù)是無法提交的

          ·value初始值

          ·size顯示寬度

          ·maxlength:大字符數(shù),默認是沒有限制

          ·readonly只讀:readonly=“readonly”,可簡寫readonly,即只寫屬性名

          ·disabled禁用:disabled=“disabled”, 可簡寫disabled完全禁用

          表單元素被提交的兩個條件,1.有name屬性2.非disabled

          3.2 單選按鈕
          常用屬性:

          ·name名稱:多個radio的name屬性必須相同,才能實現(xiàn)互斥(單選)

          ·value值

          ·checked:是否被選中,兩種狀態(tài),選中,未選中 checked=“checked” 簡寫 checked

          3.3 復(fù)選框
          常用屬性與單選按鈕radio類似

          3.4 文件選擇器
          常用屬性:

          ·name:名稱

          ·accept設(shè)置可選擇的文件類型,用來限制上傳的文件類型

          使用MIME格式字符串對資源類型進行限制

          常見的MIME類型:

          ·純文本:text/plain text/xml text/html

          · 圖像:image/png image/jpeg image/gif

          4.特殊表單元素

          4.1下拉列表

          select常用屬性:

          ·name名稱

          ·size行數(shù),同時顯示多個選項

          ·multiple允許同時選擇多個

          option常用屬性:

          ·value選項值

          ·selected設(shè)置默認選中項

          optgroup常用屬性:

          ·label分組的標簽

          4.2文本域

          ·name名稱

          ·rows行數(shù)

          ·cols列數(shù)


          5、其他標簽

          5.1 label標簽

          為表單元素提供標簽,當選中l(wèi)abel標簽中的文本內(nèi)容時會自動將光標切換到與之相關(guān)聯(lián)的表單元素。

          常用屬性:

          ·for必須將該屬性值設(shè)置為與相關(guān)聯(lián)的表單元素的Id屬性值相同。

          注:幾乎所有HTML標簽都具有id屬性,且id值必須唯一。

          5.2 button標簽

          也表示按鈕,與input按鈕類似

          語法:

          1按鈕文字或圖像

          常用屬性:

          ·type按鈕的類型,取值: submit(默認)、reset、button

          5.3 fieldset和legend標簽

          fieldset標簽,對表單元素進行分組

          legend標簽,對分組添加標題

          七、內(nèi)嵌框架
          1、簡介

          使用iframe可以在一個頁面中引用另一個頁面,實現(xiàn)復(fù)用、靈活

          2、基本用法

          語法:

          1

          常用屬性:

          · src:引用的頁面

          · width/height寬度/高度 ,像素或百分比

          · frameborder是否顯示邊框,取值:1(yes) 0(no)—默認

          · scrolling是否顯示滾動條,取值:yes no auto

          · name屬性 為框架定義名稱

          3、在框架中打開鏈接

          1

          2

          3鏈接的文本或圖像

          八、HTML5簡介

          1、發(fā)展

          W3C于1992年12月發(fā)布了HTML4.0.1標準
          W3C于2014年10月發(fā)布了HTML5標準

          2、特點

          · 取消了過時的標簽,如font、center等,它們僅具有展示外觀的功能

          · 增加了一些更具有語義化的標簽,如header、footer、aside等

          · 增加了一些新功能標簽,如canvas、audio、video

          · 增加了一些表單控件,如email、date、time、url、search等

          · 可以直接在瀏覽器中繪畫(canvas),無需flash

          · 增加了本地存儲的支持

          3、兼容性

          http://caniuse.com

          提供了各種瀏覽器版本對HTML5和CSS規(guī)范的支持度

          九、HTML5新增內(nèi)容
          1、結(jié)構(gòu)相關(guān)的標簽

          用來進行頁面結(jié)構(gòu)布局,本身無任何特殊樣式,需要使用CSS進行樣式設(shè)置

          · article定義一個獨立的內(nèi)容,完整的文章

          · section定義文檔的章節(jié)、段落

          · header文章的頭部、頁眉、標題

          · footer文章的底部、頁腳、標注

          · aside定義側(cè)邊欄

          · figure圖片區(qū)域

          · figcaption為圖片區(qū)域定義標題

          · nav定義導(dǎo)航菜單

          結(jié)構(gòu)標簽只是表明各部分的角色,并無實際的外觀樣式,與普通div相同

          2、語義相關(guān)的標簽
          2.1 mark標簽
          標注,用來突出顯示文本,默認添加黃色背景
          2.2 time標簽
          定義日期和時間,便于搜索引擎智能查找
          2.3 details和 summary標簽
          默認顯示summary中的內(nèi)容,點擊后顯示details中的內(nèi)容
          注:并不是所有的瀏覽器都兼容,chrome、opera支持、Firefox、IE瀏覽器不支持
          2.4 meter標簽
          計數(shù)儀,表示度量
          常用屬性:

          · max定義大值,默認為1

          · min定義小值,默認為0

          · value定義當前值

          · high定義限定為高的值

          · low定義限定為低的值

          · optimum定義佳值

          規(guī)則:

          1. 如果optimum大于high,則表示值越大越好

          當value大于high時為綠色

          當value在low與high之間時為黃色

          當value小于low時為紅色

          1. 如果optimum小于low,則表示值越小越好

          當value小于low時為綠色

          當value在low與high之間時為黃色

          當value大于high時為紅色

          1. 當optimum介于low和high之間,則表示值在low和high之間好當value在low與high之間時顯示綠色,否則顯示黃色

          2.5 progress標簽
          進度條,表示運行中的進度
          常用屬性:

          · value定義當前值

          · max定義完成的值

          3.表單相關(guān)
          3.1 新增表單元素
          新增以下type類型:

          · email接收郵箱

          · url接收URL

          · tel接收電話號碼,目前僅在移動設(shè)備上有效

          · search搜索文框

          · number/range接收數(shù)字/數(shù)字滑塊,包含min,max,step屬性

          · date/month/week/time/datetime日期時間選擇器,兼容性不好

          · color顏色拾取

          作用:

          · 具有格式校驗的功能

          · 可以與移動設(shè)備的鍵盤相關(guān)聯(lián)

          3.2新增表單屬性
          form標簽的屬性:

          · autocomplete是否啟動表單的自動完成功能, 取值:on(默認)、o?

          · novalidate提交表單時不進行校驗,默認會進行表單校驗

          3.3 新增表單元素的屬性
          新增表單元素屬性:input/select/textarea等

          · placeholder提示文字

          · required是否必填

          · autocomplete是否啟用該表單元素的自動完成功能

          · autofocus設(shè)置初始焦點元素

          · pattern使用正則表達式(RegExp后面會講解),進行數(shù)據(jù)校驗

          · list使文本元素具有下拉列表的功能,需要配合datalist和option標簽一起使用

          · form可以將表單元素寫在form標簽外面,然后通過該屬性關(guān)聯(lián)指定的表單

          4、多媒體標簽
          4.1audio標簽
          在頁面中插入音頻,不同的瀏覽器對音頻格式的支持不一樣
          audio常用屬性:

          · src音頻文件的來源

          · controls是否顯示控制面板,默認不顯示

          · autoplay是否自動播放,默認不自動播放

          · loop是否循環(huán)播放

          · muted是否靜音

          · preload是否預(yù)加載,取值:none不預(yù)加載、auto預(yù)加載(默認)、metadata只加載元數(shù)據(jù)

          如果設(shè)置了autoplay屬性,則該屬性無效

          可以結(jié)合source標簽使用,指定多個音頻文,瀏覽器會檢測并使用第一個可用的音頻文件

          4.2 video標簽
          在頁面中插入視頻,不同的瀏覽器對視頻格式的支持不一樣
          用法與audio標簽基本相同,增加屬性:

          · widht/height視頻播放器的寬度/高度

          · poster在視頻加載前顯示的圖片

          案例1hello.html

          <html>
          	<body>
          		<tiele>HTML技術(shù)</tiele>
          	</body>
          	<body>
          		大家好,歡迎學(xué)習(xí)html技術(shù)!
          	</body>
          </html>1234567

          效果

          [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-h271e4v6-1593240920352)(C:\Users\lenovo\Desktop\新建文件夾\靜態(tài)網(wǎng)頁2\案例\result\案例1.png)]

          案例2標簽的組成.html

          <!DOCTYPE html>
          <html lang="en">
          <head>
          	<meta charset="UTF-8">
          	<title>標簽</title>
          </head>
          <body text="blue">
          	標簽的組成
          	<br>
          	html從入門到精通!
          	<hr>
          	<h1>標簽的分類</h1>
          	<hr>
          
          	<h2>標簽的分類</h2>
          	<hr>
          
          	<h6>標簽的分類</h6>
          	<hr>
          
          	<span>哈哈</span>嘿嘿
          	
          </body>
          </html>1234567891011121314151617181920212223

          效果

          [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jx6zJE1P-1593240920354)(C:\Users\lenovo\Desktop\新建文件夾\靜態(tài)網(wǎng)頁2\案例\result\案例2.png)]

          案例3實體字符.html

          <!DOCTYPE html>
          <html lang="en">
          <head>
          	<meta charset="UTF-8">
          	<title>Document</title>
          </head>
          <body>
          	圖書:<<HTML從入門到精通<<
          	<hr>
          
          	北京      上海      廣州
          	<hr>
          
          	在HTML中用<表示<小于號
          	<hr>
          
          	“HTML語言” 或 &qout;HTML語言&qout;
          	<hr>
          
          	版權(quán)所有? 2000-2020 高教培訓(xùn)
          	<hr>
          
          	×關(guān)閉符號
          </body>
          </html>123456789101112131415161718192021222324

          效果

          [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nuFLl3hm-1593240920355)(C:\Users\lenovo\Desktop\新建文件夾\靜態(tài)網(wǎng)頁2\案例\result\案例3.png)]

          (剩下的下期出)

          原文鏈接:https://blog.csdn.net/WanXuang/article/details/106982782?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160513384519724835852804%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160513384519724835852804&biz_id=&utm_medium=distribute.pc_search_top_result.none-task-code-2~all~top_position~default-1-106982782-12.nonecase&utm_term=html

          作者:WanXuang

          出處:從CSDN

          heckbox應(yīng)該不被選擇

          [Arguments] ${locator}

          Checkbox Should Not Be Selected ${locator}

          Frame應(yīng)該包含文本

          [Arguments] ${locator} ${text} ${loglevel}=INFO

          Frame Should Contain ${locator} ${text} ${loglevel}

          List應(yīng)該無選項

          [Arguments] ${locator}

          List Should Have No Selections ${locator}

          List選項應(yīng)該是

          [Arguments] ${locator} @{items}

          List Selection Should Be ${locator} @{items}

          Radio按鈕不應(yīng)該被選擇

          [Arguments] ${group_name}

          Radio Button Should Not Be Selected ${group_name}

          Radio按鈕應(yīng)該被設(shè)置成

          [Arguments] ${group_name} ${value}

          Radio Button Should Be Set To ${group_name} ${value}

          Url應(yīng)該包含

          [Arguments] ${expected}

          Location Should Contain ${expected}

          Xpath應(yīng)該匹配X次

          [Arguments] ${xpath} ${expected_xpath_count} ${msg}= ${loglevel}=INFO

          Xpath Should Match X Times ${xpath} ${expected_xpath_count} ${msg} ${loglevel}

          checkbox應(yīng)該被選擇

          [Arguments] ${locator}

          checkbox should be selected ${locator}

          url應(yīng)該是

          [Arguments] ${url}

          Location Should Be ${url}

          下次確認選擇取消

          Choose Cancel On Next Confirmation

          下次確認選擇確定

          Choose Ok On Next Confirmation

          從List中取消選項

          [Arguments] ${locator} @{items}

          Unselect From List ${locator} @{items}

          從List選擇選項

          [Arguments] ${locator} @{items}

          Select From List ${locator} @{items}

          偏移拖拽

          [Arguments] ${source} ${xoffset} ${yoffset}

          Drag And Drop By Offset ${source} ${xoffset} ${yoffset}

          元素應(yīng)該不包含文本

          [Arguments] ${locator} ${expected} ${msg}=

          Element Should Not Contain ${locator} ${expected} ${msg}

          元素應(yīng)該不可用

          [Arguments] ${locator}

          Element Should Be Disabled ${locator}

          元素應(yīng)該不可見

          [Arguments] ${locator} ${msg}=

          Element Should Not Be Visible ${locator} ${msg}

          元素應(yīng)該包含文本

          [Arguments] ${locator} ${text}

          Element Should Contain ${locator} ${text}

          元素應(yīng)該匹配x次

          [Arguments] ${locator} ${count} ${msg}= ${loglevel}=INFO

          Locator Should Match X Times ${locator} ${count} ${msg} ${loglevel}

          元素應(yīng)該可用

          [Arguments] ${locator}

          Element Should Be Enabled ${locator}

          元素應(yīng)該可見

          [Arguments] ${locator}

          Element Should Be Visible ${locator}

          元素文本應(yīng)該是

          [Arguments] ${locator} ${expected} ${msg}=

          Element Text Should Be ${locator} ${expected} ${msg}

          全選List元素

          [Arguments] ${locator}

          Select All From List ${locator}

          關(guān)閉所有瀏覽器

          Close All Browsers

          關(guān)閉瀏覽器

          Close Browser

          關(guān)閉窗口

          Close Window

          切換瀏覽器

          [Arguments] ${index}

          Switch Browser ${index}

          創(chuàng)建Webdriver

          [Arguments] ${driver_name} ${alias}= ${kwargs}={}

          Create Webdriver ${driver_name} ${alias} ${kwargs}

          刪除Cookie

          [Arguments] ${name}

          Delete Cookie ${name}

          刪除所有Cookie

          Delete All Cookies

          刪除本地策略

          [Arguments] ${strategy_name}

          Remove Location Strategy ${strategy_name}

          刷新頁面

          Reload Page

          雙擊元素

          [Arguments] ${locator}

          Double Click Element ${locator}

          取消選擇Checkbox

          [Arguments] ${locator}

          Unselect Checkbox ${locator}

          取消選擇Frame

          Unselect Frame

          回退

          Go Back

          在圖片上按下鼠標左鍵

          [Arguments] ${locator}

          Mouse Down On Image ${locator}

          在連接上按下鼠標左鍵

          [Arguments] ${locator}

          Mouse Down On Link ${locator}

          應(yīng)該出現(xiàn)警告彈窗

          [Arguments] ${text}=

          Alert Should Be Present ${text}

          當前Frame不應(yīng)該包含

          [Arguments] ${text} ${loglvl}=INFO

          Current Frame Should Not Contain ${text} ${loglvl}

          當前Frame包含

          [Arguments] ${text} ${loglevel}=INFO

          Current Frame Contains ${text} ${loglevel}

          截屏

          [Arguments] @{filename}

          Capture Page Screenshot @{filename}

          打開瀏覽器

          [Arguments] ${url} ${browser}=chrome @{args}

          Open Browser ${url} ${browser} @{args}

          打開菜單

          [Arguments] ${locator}

          Open Context Menu ${locator}

          執(zhí)行js

          [Arguments] ${code}

          Execute Javascript ${code}

          執(zhí)行異步j(luò)s

          [Arguments] ${code}

          Execute Async Javascript ${code}

          拖拽元素

          [Arguments] ${source} ${target}

          Drag And Drop ${source} ${target}

          按下鼠標左鍵

          [Arguments] ${locator}

          Mouse Down ${locator}

          按鍵

          [Arguments] ${locator} ${key}

          [Documentation] 按鍵 \ \ text_field \ \ q

          ...

          ... 按鍵 \ \ login_button \ \13 \ \ #ASCII Code for enter Key

          Press Key ${locator} ${key}

          提交表單

          [Arguments] ${locator}=

          Submit Form ${locator}

          文本區(qū)值應(yīng)該是

          [Arguments] ${locator} ${expected} ${msg}=

          Textarea Value Should Be ${locator} ${expected} ${msg}

          文本區(qū)應(yīng)該包含

          [Arguments] ${locator} ${expected} ${msg}=

          Textarea Should Contain ${locator} ${expected} ${msg}

          文本框值應(yīng)該是

          [Arguments] ${locator} ${expected} ${msg}=

          Textfield Value Should Be ${locator} ${expected} ${msg}

          文本框應(yīng)該包含

          [Arguments] ${locator} ${expected} ${msg}=

          Textfield Should Contain ${locator} ${expected} ${msg}

          最大化

          Maximize Browser Window

          標題應(yīng)該是

          [Arguments] ${title}

          Title Should Be ${title}

          根據(jù)Index從List中取消選項

          [Arguments] ${locator} @{indexes}

          Unselect From List By Index ${locator} @{indexes}

          根據(jù)Index從List選擇

          [Arguments] ${locator} @{indexes}

          Select From List By Index ${locator} @{indexes}

          根據(jù)Label從List中取消選項

          [Arguments] ${locator} @{Labels}

          Unselect From List By Label ${locator} @{Labels}

          根據(jù)Label從List選擇

          [Arguments] ${locator} @{labels}

          Select From List By Label ${locator} @{labels}

          根據(jù)Value從List中取消選項

          [Arguments] ${locator} @{values}

          Unselect From List By Value ${locator} @{values}

          根據(jù)Value從List選擇

          [Arguments] ${locator} @{values}

          Select From List By Value ${locator} @{values}

          根據(jù)值選擇列表元素

          [Arguments] ${locator} ${value}

          Select From List By Value ${locator} ${value}

          模擬

          [Arguments] ${locator} ${event}

          Simulate ${locator} ${event}

          注冊失敗后運行的關(guān)鍵字

          [Arguments] ${kwd}

          Register Keyword To Run On Failure ${kwd}

          添加cookie

          [Arguments] ${name} ${value} ${path}= ${domain}= ${secure}= ${expiry}=

          添加本地策略

          [Arguments] ${strategy_name} ${strategy_keyword} ${persist}=False

          Add Location Strategy ${strategy_name} ${strategy_keyword} ${persist}

          清除元素文本

          [Arguments] ${locator}

          Clear Element Text ${locator}

          點擊元素

          [Arguments] ${path}

          Click Element ${path}

          點擊元素坐標

          [Arguments] ${locator} ${xoffset} ${yoffset}

          Click Element At Coordinates ${locator} ${xoffset} ${yoffset}

          點擊圖片

          [Arguments] ${locator}

          Click Image ${locator}

          點擊按鈕

          [Arguments] ${path}

          Click Button ${path}

          點擊鏈接

          [Arguments] ${locator}

          Click Link ${locator}

          睡眠

          [Arguments] ${time}

          Sleep ${time}

          確認

          Confirm Action

          窗口列表

          @{list} List Windows

          [Return] @{list}

          等待元素不包含文本

          [Arguments] ${locator} ${text} ${timeout}= ${error}=

          Wait Until Element Does Not Contain ${locator} ${text} ${timeout} ${error}

          等待元素不可見

          [Arguments] ${locator} ${timeout}= ${error}=

          Wait Until Element Is Not Visible ${locator} ${timeout} ${error}

          等待元素包含文本

          [Arguments] ${locator} ${text} ${timeout}= ${error}=

          Wait Until Element Contains ${locator} ${text} ${timeout} ${error}

          等待元素可用

          [Arguments] ${locator} ${timeout}= ${error}=

          Wait Until Element Is Enabled ${locator} ${timeout} ${error}

          等待元素可見

          [Arguments] ${locator} ${timeout}=30

          Wait Until Element Is Visible ${locator} ${timeout}

          等待執(zhí)行成功

          [Arguments] ${timeout} ${retry} ${keyword} @{args}

          Wait Until Keyword Succeeds ${timeout} minutes ${retry} sec ${keyword} @{args}

          等待條件成立

          [Arguments] ${condition} ${timeout}= ${error}=

          Wait For Condition ${condition} ${timeout} ${error}

          等待頁面不包含元素

          [Arguments] ${locator} ${timeout}= ${error}=

          Wait Until Page Does Not Contain Element ${locator} ${timeout} ${error}

          等待頁面包含元素

          [Arguments] ${locator} ${timeout}= ${error}=

          Wait Until Page Contains Element ${locator} ${timeout} ${error}

          等待頁面包含文本

          [Arguments] ${text} ${timeout}= ${error}=

          Wait Until Page Contains ${text} ${timeout} ${error}

          給元素分配ID

          [Arguments] ${locator} ${id}

          Assign Id To Element ${locator} ${id}

          獲取Cookie值

          [Arguments] ${name}

          ${value} Get Cookie Value ${name}

          [Return] ${value}

          獲取List元素

          [Arguments] ${locator}

          @{items} Get List Items ${locator}

          獲取List多個選定值

          [Arguments] ${locator}

          @{values} Get Selected List Values ${locator}

          [Return] @{values}

          獲取List多個選定標簽

          [Arguments] ${locator}

          @{labels} Get Selected List Labels ${locator}

          [Return] @{labels}

          獲取List選定值

          [Arguments] ${locator}

          ${value} Get Selected List Value ${locator}

          [Return] ${value}

          獲取List選定標簽

          [Arguments] ${locator}

          ${label} Get Selected List Label ${locator}

          [Return] ${label}

          獲取Selenium等待時間

          ${sec} Get Selenium Implicit Wait

          [Return] ${sec}

          獲取Selenium超時

          ${timeout} Get Selenium Timeout

          [Return] ${timeout}

          獲取Selenium速率

          ${res} Get Selenium Speed

          [Return] ${res}

          獲取xpath匹配次數(shù)

          [Arguments] ${xpath}

          ${count} Get Matching Xpath Count ${xpath}

          [Return] ${count}

          獲取元素值

          [Arguments] ${locator}

          ${value} Get Value ${locator}

          [Return] ${value}

          獲取元素屬性

          [Arguments] ${attribute_locator}

          Get Element Attribute ${attribute_locator}

          獲取元素文本

          [Arguments] ${locator}

          ${text} Get Text ${locator}

          [Return] ${text}

          獲取坐標

          ${location} Get Location

          [Return] ${location}

          獲取垂直坐標

          [Arguments] ${locator}

          ${vertical} Get Vertical Position ${locator}

          [Return] ${vertical}

          獲取當前Url

          ${url} Log Location

          [Return] ${url}

          獲取當前頁面標題

          ${title} Log Title

          [Return] ${title}

          獲取所有Cookie

          @{cookies} Get Cookies

          [Return] @{cookies}

          獲取所有連接

          @{links} Get All Links

          [Return] @{links}

          獲取文本

          [Arguments] ${path}

          ${text} get text ${path}

          [Return] ${text}

          獲取標題

          ${title} get title

          [Return] ${title}

          獲取水平坐標

          [Arguments] ${locator}

          @{position} Get Horizontal Position ${locator}

          [Return] @{position}

          獲取焦點

          [Arguments] ${locator}

          Focus ${locator}

          獲取窗口名字

          @{names} Get Window Names

          [Return] @{names}

          獲取窗口坐標

          ${x} ${y}= Get Window Position

          [Return] ${x} ${y}

          獲取窗口大小

          ${width} ${higth}= GET Window Size

          [Return] ${width} ${higth}

          獲取窗口標識

          @{windows} Get Window Identifiers

          [Return] @{windows}

          獲取窗口標題

          @{titles} Get Window Titles

          [Return] @{titles}

          獲取表格內(nèi)容

          [Arguments] ${table_locator} ${row} ${column} ${loglevel}=INFO

          ${cell} Get Table Cell ${table_locator} ${row} ${column} ${loglevel}

          [Return] ${cell}

          獲取警告信息

          ${msg} Get Alert Message

          [Return] ${msg}

          獲取資源

          ${source} Get Source

          [Return] ${source}

          獲取頁面元素

          [Arguments] ${locator}

          @{elements} Get Webelements ${locator}

          [Return] @{elements}

          獲取頁面標題

          ${title} Get Title

          [Return] ${title}

          獲取頁面資源

          [Arguments] ${loglevel}=INFO

          ${source} Log Source ${loglevel}

          [Return] ${source}

          表頭應(yīng)該包含

          [Arguments] ${table_locator} ${expected} ${loglevel}=INFO

          table header should contain ${table_locator} ${expected} ${loglevel}

          表頭應(yīng)該包含文本

          [Arguments] ${table_locator} ${expected} ${loglevel}=INFO

          Table Header Should Contain ${table_locator} ${expected} ${loglevel}

          表應(yīng)該包含文本

          [Arguments] ${table_locator} ${expected} ${loglevel}=INFO

          Table Should Contain ${table_locator} ${expected} ${loglevel}

          表格Footer應(yīng)該包含文本

          [Arguments] ${table_locator} ${expected} ${loglevel}

          Table Footer Should Contain ${table_locator} ${expected} ${loglevel}

          表格列應(yīng)該包含文本

          [Arguments] ${table_locator} ${col} ${expected} ${loglevel}=INFO

          Table Column Should Contain ${table_locator} ${col} ${expected} ${loglevel}

          表格應(yīng)該包含

          [Arguments] ${table_locator} ${row} ${column} ${expected}

          table cell should contain ${table_locator} ${row} ${column} ${expected}

          表格應(yīng)該包含文本

          [Arguments] ${table_locator} ${row} ${column} ${expected} ${loglevel}=INFO

          Table Cell Should Contain ${table_locator} ${row} ${column} ${expected} ${loglevel}

          表格行應(yīng)該包含文本

          [Arguments] ${table_locator} ${row} ${expected} ${loglvl}=INFO

          Table Row Should Contain ${table_locator} ${row} ${expected} ${loglvl}

          設(shè)置Selenium等待

          [Arguments] ${seconds}

          ${return} Set Selenium Implicit Wait ${seconds}

          [Return] ${return}

          設(shè)置Selenium超時

          [Arguments] ${seconds}

          Set Selenium Timeout ${seconds}

          設(shè)置Selenium速率

          [Arguments] ${speed}

          Set Selenium Speed ${speed} seconds

          設(shè)置瀏覽器等待時間

          [Arguments] ${seconds}

          Set Browser Implicit Wait ${seconds}

          設(shè)置窗口坐標

          [Arguments] ${x} ${y}

          Set Window Position ${x} ${y}

          設(shè)置窗口大小

          [Arguments] ${width} ${higth}

          Set Window Size ${width} ${higth}

          跳轉(zhuǎn)

          [Arguments] ${url}

          Go To ${url}

          跳轉(zhuǎn)到

          [Arguments] ${url}

          go to ${url}

          輸入密碼

          [Arguments] ${path} ${passwd}

          Input password ${path} ${passwd}

          輸入文本

          [Arguments] ${path} ${str}

          Input Text ${path} ${str}

          選擇Checkbox

          [Arguments] ${locator}

          Select Checkbox ${locator}

          選擇Frame

          [Arguments] ${locator}

          Select Frame ${locator}

          選擇Radio按鈕

          [Arguments] ${group_name} ${value}

          Select Radio Button ${group_name} ${value}

          選擇文件

          [Arguments] ${locator} ${file_path}

          Choose File ${locator} ${file_path}

          選擇窗口

          [Arguments] ${locator}=

          Select Window ${locator}

          頁面應(yīng)該不包含Checkbox

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Checkbox ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含Link

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Link ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含List

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain List ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含Radio按鈕

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Radio Button ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含元素

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Element ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含圖片

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Image ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含按鈕

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Button ${locator} ${msg} ${loglevel}

          頁面應(yīng)該不包含文本

          [Arguments] ${text} ${lvl}=INFO

          Page Should Not Contain ${text} ${lvl}

          頁面應(yīng)該不包含文本框

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Not Contain Textfield ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含Checkbox

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Checkbox ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含Link

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Link ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含List

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain List ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含Radio按鈕

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Radio Button ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含元素

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Element ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含圖片

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Image ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含按鈕

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Button ${locator} ${msg} ${loglevel}

          頁面應(yīng)該包含文本

          [Arguments] ${text} ${loglevel}=INFO

          Page Should Contain ${text} ${loglevel}

          頁面應(yīng)該包含文本框

          [Arguments] ${locator} ${msg}= ${loglevel}=INFO

          Page Should Contain Textfield ${locator} ${msg} ${loglevel}

          鼠標懸停

          [Arguments] ${locator}

          Mouse Over ${locator}

          鼠標移出

          [Arguments] ${locator}

          Mouse Out ${locator}

          鼠標釋放

          [Arguments] ${locator}

          Mouse Up ${locator}

          RFS自動化測試工具安裝與使用總結(jié)

          一,調(diào)試

          1,在調(diào)試時,總時提示“無法打開瀏覽器”

          解決辦法:

          1,把瀏覽器的代理關(guān)閉

          2,把瀏覽器的顯示比例調(diào)到100%

          3,在IE設(shè)置的安全選項中,把啟用保護模式開啟

          4,去除進入系統(tǒng)彈出的登錄提示

          在瀏覽器中---工具---internet選項---安全---把只在intranet自動登錄,改為匿名登錄

          二,安裝加載庫

          1,RequestsLibrary

          先安裝Requests工具,再安裝RequestsLibrary

          再在robot中進行加載lib,如果加載的庫還是紅色的,重啟就可以了

          三,常用關(guān)鍵字

          open browser 打開瀏覽器

          input text 在文本框中錄入內(nèi)容

          input password 在文本框中錄入密碼

          click button 點擊按鈕

          page should (NOT)contain (link,button,element,checkbox,list) 頁面是否出現(xiàn)指定的內(nèi)容

          close browser 關(guān)閉瀏覽器

          多個打開瀏覽器切換

          open browser http://127.0.0.1:8000/ ie local

          switch browser local

          針對頁面彈出窗口的確認鍵

          confirm action----類似于點擊彈出窗的確認或OK鍵

          alert should be present 當前彈窗的內(nèi)容 -----判斷當前指定內(nèi)容的彈窗是否存在

          get alert message---獲取彈出窗的信息

          ${msg}= get alert message

          should be equal as string ${msg} *****

          在彈窗中選擇取消操作

          a,choose cancle on next confirmaction

          b,confirm action

          設(shè)置日志級別

          Set Log Level TRACE

          下拉列表

          select from list xpath value

          select from list by value xpath value

          select from list by index xpath value

          框架

          select frame id=fra

          unselect frame

          復(fù)選框

          select checkbox id=CheckYes

          unselect checkbox id=CheckNo

          checkbox should not be selected

          select checkbox

          checkbox should be selected

          單選框

          select radio button radio1---單選框名稱 A--value)

          click element id=registerGenderMale

          Oracle數(shù)據(jù)庫

          connect to database using custom params(關(guān)鍵字) cx_Oracle 用戶名,密碼,SID

          ${row} row count select * from 表1;

          等待頁面加載

          wait until page contains element

          sleep

          reload page---刷新

          注釋

          Comment

          幾個關(guān)鍵字的區(qū)別

          Wait Until Keyword Succeeds

          wait until page contains element

          SLEEP

          element should contain

          page should contain element

          page should contain

          Element Should Not Be Visible

          判斷的使用

          判斷條件---數(shù)字對比

          Run Keyword If ${res} == 0 執(zhí)行的關(guān)鍵字

          ... ELSE 執(zhí)行的關(guān)鍵字2

          判斷條件---字符對比

          Run Keyword If ‘${res}’ == ‘ttttt' 執(zhí)行的關(guān)鍵字

          判斷條件---布爾類型對比

          Run Keyword If '${res}' == '${true}' 執(zhí)行的關(guān)鍵字

          HTTP接口

          create session httpserver http://localhost:8000

          ${addr} Get request httpserver users/s

          should be equal as strings ${addr.status_code} 200

          log ${addr.content}

          ${resp} tojson ${addr.content}

          四,常見問題解答

          1,定位不到元素

          Element locator '//input[@id="registerName"]' did not match any elements.

          前端代碼

          <td>

          <div class="c">

          <span id="disp_registerName" class="cp edit_hide" style="display: none;"></span>

          <input id="registerName" class="pa_ui_text edit_show pa_ui_element_normal" type="text" otitle="車主姓名" value="" name="register.name" style="display: inline;">

          </div>

          </td>

          解決方法:

          先從最里面的元素開始一級一級往上找,找到iframe,然后先select frame這個ID就可以定位到里面的元素了。

          2,InvalidElementStateException: Message: u'Element must not be hidden, disabled or read-only'

          針對根據(jù)復(fù)選框的狀態(tài),解決文本框中默認帶出內(nèi)容時。如果這樣寫就會報錯

          select checkbox id=noLicenseFlag

          input text id=registerName 湘A*

          像這樣的組合,后面那句input text id=registerName 湘A*直接刪除就可以了。

          3,頁面操作按鈕提示找不到elements

          click button id=carInfoSubmitBtn

          改為click element id=carInfoSubmitBtn

          4,根據(jù)錄入框內(nèi)容彈出框框,定位不到元素

          采用相對路徑的方式定位,用firefox瀏覽器打開地址,按F12獲取元素位置,右擊---選擇復(fù)制XPATH

          放在腳本中形式為:xpath=/html/body/div[9]/div[2]/table/tbody/tr[4]/td[4]

          6,InvalidElementStateException: Message: u'Element must not be hidden, disabled or read-only'

          出現(xiàn)這個現(xiàn)象是因為腳本執(zhí)行快,而頁面的元素還沒有加載完成造成的。

          等待頁面加載

          wait until page contains element或sleep

          7,頁面執(zhí)行時沒有報錯,但一直停在那里了

          利用Mouse out 關(guān)鍵字,移開鼠標動作。

          8,使用close broswer關(guān)閉瀏覽器不起作用

          首先安裝pywin32-217.win32-py2.7.exe,再安裝AutoItLibrary庫,在close broswer關(guān)鍵字

          下一行,增加刪除進線的關(guān)鍵字: process close iexplore.exe

          10,查看所有有關(guān)robot相關(guān)庫的版本

          pip list

          11,通過pip升級庫或程序版本

          1,python -m pip install --upgrade pip

          報錯:

          You should consider upgrading via the 'python -m pip install --upgrade pip' command.

          2,根據(jù)提示,執(zhí)行命令

          python -m pip install --upgrade pip

          報錯:Requirement already up-to-date: pip in c:\python27\lib\site-packages

          3,找到c:\python27\lib\site-packages下這個目錄pip-8.1.1.dist-info并刪除,重新執(zhí)行

          python -m pip install --upgrade pip

          4,查看是否更新成功

          pip list后顯示最新版本

          12,利用pip更新庫或RIDE或robot

          pip install robotframework-ride --upgrade

          再用pip list可以看到升級成功的版本號了

          13,Run Keyword And return status關(guān)鍵字識別不了

          利用pip更新RIDE,robot,selenium2Library

          14,ImportError:No module named cx_Oracle

          根據(jù)連接oracle客戶端的版本如:11G,操作系統(tǒng)是32位還是64位

          安裝對應(yīng)的cx_Oracle安裝包,如:cx_Oracle-5.1.2-11g.win32-py2.7

          15,Unable to acquire Oracle environment handle

          在oracle客戶端的目錄中把oci.dll,oraocci11.dll,oraociei11.dll文件復(fù)制到C:\Python27\Lib\site-packages目錄中

          16,日志目錄

          Log: d:\users\liujun~1\appdata\local\temp\RIDEwzyfth.d\log.html

          Report: d:\users\liujun~1\appdata\local\temp\RIDEwzyfth.d\report.html

          17,在IE中如果click不起作用,用如下關(guān)鍵字

          press key id=kw \13

          18,單選框?qū)嵗?/p>

          <p class="checkBox">

          <input id="registerGenderMale" class="pa_ui_element_normal" type="radio" value="M" name="register.gender" otitle="車主-性別男">

          <label class="radiotxt" hidefocus="hidefoces" for="registerGenderMale">男</label>

          <input id="registerGenderFemale" class="pa_ui_element_normal" type="radio" value="F" name="register.gender" otitle="車主-性別女">

          <label class="radiotxt" hidefocus="hidefoces" for="registerGenderFemale">女</label>

          </p>

          select radio button register.gender M

          19,下拉列表實例

          <div class="pa_ui_dropselect_inner paui-clearfix">

          <span class="pa_ui_dropselect_input_Container" style="width: 71px;">

          <input class="pa_ui_dropselect_input" type="text" readonly="readonly" otitle="V3版-送單地址-縣級市" style="width: 71px; opacity: 1;">

          </span>

          <span class="pa_ui_dropselect_button" otitle="V3版-送單地址-縣級市">

          </div>

          select from list class="pa_ui_dropselect_inner paui-clearfix" 江北區(qū)

          20,通過PIP安裝Selenium2Library報錯

          C:\Users\Administrator>pip install Selenium2Library

          Collecting Selenium2Library

          Could not find a version that satisfies the requir

          versions: )

          No matching distribution found for Selenium2Library

          解決辦法:

          pip install robotframework-Selenium2Library

          就可以了

          21,安裝IEDriver報錯

          WebDriverException: Message: 'IEDriverServer.exe' executable needs to be in PATH. Please download fromhttp://selenium-release.storage.googleapis.com/index.html and read up at https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver

          解決辦法:

          下載對應(yīng)系統(tǒng)版本的IEDriverServer.exe放在IE的安裝目錄下和Python的根目錄下,并設(shè)置PATH。

          22,滾動鼠標拖動滾動條到最頂部或最底部

          execute javascript id.scrollTop其中id為滾動條區(qū)域?qū)?yīng)的id,用法:

          如:execute javascript J_introCon.scrollTop=0是拖到最頂部,execute javascript J_introCon.scrollTop=100000是拖到最底部

          23,在CASE中的setup中可以設(shè)置運行CASE前,運行SETUP里面的關(guān)鍵字。teardown中可以設(shè)置運行CASE后,指定要運行的關(guān)鍵字

          24,滿足條件結(jié)束腳本

          exit for loop

          如:如果count值為0,則結(jié)束CASE

          run keyword if ${count}==0 exit for loop

          25,執(zhí)行SQL時報錯:DatabaseError:ORA-00911:Invalid character

          去掉SQL后面的 ;

          26,執(zhí)行SQL查詢

          Execute sql String select * from 表名

          Robot Framework與Web界面自動化測試學(xué)習(xí)筆記:簡單例子

          假設(shè)環(huán)境已經(jīng)搭建好了。這里用RIDE( Robot Framework Test Data Editor)工具來編寫用例。下面我們對Robot Framework簡稱rf。

          我們先考慮下一個最基本的登錄功能的測試用例。

          一、自動化測試與人工測試

          在開始編寫用例之前,我們先來思考下自動化測試和人工測試的區(qū)別。對于web頁面的人工測試,我們想下,如果去測試,怎么操作呢?不外乎如下的基本動作:

          1)打開瀏覽器

          2)輸入url (前提web服務(wù)器要正常啟動運行著)

          3)等待頁面顯示出來

          4)用眼睛看頁面顯示的內(nèi)容是否與自己想象的一致,如果一致,認為功能正常,否則,會認為程序有問題。

          5)通過鼠標、鍵盤執(zhí)行相關(guān)的操作,通過頁面的變化和內(nèi)容顯示繼續(xù)進行檢查功能是否正常。

          那么什么是自動化測試呢?其本質(zhì)就是將人的操作過程(打開瀏覽器、輸入url、鼠標點擊、鍵盤輸入等)以及驗收標準(在人腦中驗收)轉(zhuǎn)換為測試代碼。

          有了測試代碼,就可以讓其自動運行了。

          二、登錄用例設(shè)計

          一個登錄功能,想象下如果是人工測試,那基本的測試過程一般如下:

          1)打開瀏覽器、輸入登錄url

          2)輸入用戶名、密碼(也許還有別的輸入項,如驗證碼,則取決于程序本身),點擊登錄按鈕

          3)如果是正確的用戶名密碼,應(yīng)該出來相應(yīng)的頁面;如果是錯誤的,應(yīng)該出來錯誤頁面或錯誤提示信息。

          那我們看看利用Robot Framework怎么寫用例。

          三、用例編寫

          1、成功登陸的用例1

          successLogin

          open browser http://localhost/nau/login ff

          input text id=userid xxx

          input password id=password yyy

          click button id=loginBtn

          Wait Until Element Is Visible id=userid

          close browser

          下面我們看下上面代碼的含義

          1)successLogin是用例名,是自己取的

          2)后面的語句,每句都是 “關(guān)鍵字+參數(shù)(0個或多個)”的格式,其中藍色的詞組就是關(guān)鍵字。這個例子的關(guān)鍵字是rf框架中的內(nèi)置關(guān)鍵字。

          用戶可以定義自己的關(guān)鍵字。

          open browser http://localhost/nau/login ff

          這句代碼的含義,其實看上去就能理解。open browser是關(guān)鍵字,表示打開瀏覽器;http://localhost/nau/login 是第一個參數(shù),是要打開的頁面url;ff是第二個參數(shù),代表要用的瀏覽器類型,其中ff表示是firefox瀏覽器,gc表示是chrome瀏覽器,ie表示是Internet Explorer瀏覽器。這里我們用的是firefox瀏覽器。

          input text id=userid xxx

          這句代碼,input text 是關(guān)鍵字,表示要在html組件(如文本框)中輸入信息, id=userid 是 第一個參數(shù),用于定位用來輸入的html組件,這里的id表示通過元素的id來定位,userid就是元素的id值。如果頁面中存在一個id為userid的輸入框,則就能找到。 xxx是第二個參數(shù),表示要輸入的值。想象下,如果是人工操作,就是在界面中找到這個輸入框,敲擊鍵盤輸入xxxx這幾個字符。

          看到這里,我們可以把關(guān)鍵字當作一個函數(shù)(其實它本質(zhì)上就是一個函數(shù)),后面跟的是函數(shù)參數(shù),有的關(guān)鍵字有參數(shù),有的沒有。

          input password id=password yyy

          這句代碼,也非常好理解了,就是在密碼框中輸入密碼了。其中input password為關(guān)鍵字。

          click button id=loginBtn

          這句代碼,看上去也明白了,click button 是關(guān)鍵字,表示點擊按鈕;id=loginBtn是第一個參數(shù),用于定位要點擊的按鈕,這里也是用id來定位的。

          Wait Until Element Is Visible id=userid

          前面的幾句代碼,進行的相關(guān)的操作,這句代碼就是檢查操作結(jié)果。如果登錄成功,會出現(xiàn)新的頁面,并且頁面上應(yīng)該有個元素會顯示用戶的登錄名。

          這里的Wait Until Element Is Visible 是關(guān)鍵字,顧名思義,就是等待元素可見; id=userid就是要顯示的元素,這里同樣是通過id定位。

          實際上這個檢查是不完善的,這里只是檢查了是否有id為userid的元素,但元素的內(nèi)容呢(正常內(nèi)容應(yīng)該是xxx),沒有檢查。這點我么在下個用例介紹。

          close browser

          上面是這個用例的最后一個語句。這很好理解了,就是關(guān)閉瀏覽器。close browser是關(guān)鍵字,該關(guān)鍵字沒有參數(shù)。

          執(zhí)行該用例。如果系統(tǒng)存在用戶名為xxx和密碼為yyy的用戶,則該用例就會成功。

          2、成功登陸用例2

          上面是一個最基本的用例。上面用例存在一個問題,就是檢查用例成功的標準是看希望的html元素是否存在。但很多時候不僅需要判斷希望的元素是否存在,還需要判斷元素的內(nèi)容是否符合預(yù)期。就上面這個用例,希望 id為userid的元素的內(nèi)容是xxx。那用例應(yīng)該如何寫呢?

          successLogin2

          open browser http://localhost/nau/login ff

          input text id=userid xxx

          input password id=password yyy

          click button id=loginBtn

          ${value} get text id=userid

          Should Be Equal ${value} xxx

          close browser

          和上個用例相比,區(qū)別就是檢查語句(上面紅色的2行)。

          其中${value} get text id=userid的含義是 利用關(guān)鍵字 get text 獲取id為userid元素的內(nèi)容放到變量${value}中。

          而 Should Be Equal ${value} xxx 語句,Should Be Equal 是關(guān)鍵字,用來斷言兩個參數(shù)的值是否相等,如果不等,則表示失敗。

          3、失敗登錄用例

          上面是驗證成功登錄的用例。那應(yīng)該也有驗證登錄失敗的用例。其思路差不多,就是當?shù)卿浭『蟮捻撁媸巧丁Mㄟ^代碼來進行檢查。

          我們假設(shè)登錄失敗后會出現(xiàn)一個新的頁面,頁面中有文本 “用戶名或密碼錯誤”字樣。那么用例就可以這么寫。

          errorLogin

          open browser http://localhost/nau/login ff

          input text id=userid xxx

          input password id=password yyy123

          click button id=loginBtn

          Wait Until Page Contains 用戶名或密碼錯誤

          close browser

          相比前面的用例,區(qū)別還是驗收語句。上面的驗收語句一看就明白,Wait Until Page Contains 是關(guān)鍵字,用于檢查頁面中是否包含預(yù)期的信息。

          4、自定義關(guān)鍵字

          可以看出,上面3個用例,前面的4個語句,區(qū)別只是輸入的參數(shù) 用戶名和密碼的值區(qū)別,我們自然會想到,可以把這4個語句封裝成一個關(guān)鍵字,包含兩個參數(shù)用戶名和密碼。

          關(guān)鍵字定義如下:

          login

          [Arguments] ${username} ${password}

          open browser http://localhost/boot/login ff

          input text id=userid ${username}

          input password id=password ${password}

          click button id=loginBtn

          使用該關(guān)鍵字的用例如下

          loginSuccessWithKeywords

          login xxx yyy

          ${value} get text id=userid

          Should Be Equal ${value} xxx

          close browser

          loginErrorWithKeywords

          login xxx yyy123

          Wait Until Page Contains 用戶名或密碼錯誤

          close browser

          5、用例的setup和teardown

          每個用例,從整個實現(xiàn)講。一般包括如下三大部分:

          1)執(zhí)行條件設(shè)置部分(setup部分):因為用例的執(zhí)行,通常需要一些條件。如前面的登錄成功用例,需要用戶已經(jīng)存在。

          2)用例執(zhí)行部分:包括該用例進行的操作,對結(jié)果的驗證

          3)清理部分(teardown部分):在自動化測試中,我們希望用例執(zhí)行后,對當前環(huán)境不會有任何破壞。因此一般需要做些清理工作,包括第一部分條件設(shè)置對系統(tǒng)造成的影響和用例執(zhí)行過程中對系統(tǒng)造成的影響。

          rf對這也提供了支持,可以把一個用例分成三部分。雖然我們寫成一部分,從最終效果上講沒區(qū)別。但分開了,會更加符合邏輯,用例也非常清楚。

          對于我們這個登錄用例,可以看出,每個用例完成的最后一步都要關(guān)閉瀏覽器,這里用的是close browser。

          因為各個用例都是公共的,我們可以把這放到用例包的teardown中。

          *** Settings ***

          Test Teardown close browser

          這樣每個用例的最后語句close browser都不需要了。

          把一些語句放到teardown中,還有一個好處是,無論用例執(zhí)行部分出現(xiàn)什么問題,最后的teardown都會保證被執(zhí)行。


          主站蜘蛛池模板: 三级韩国一区久久二区综合| 亚洲国产成人久久一区WWW| 无码毛片一区二区三区视频免费播放 | 久久久一区二区三区| 韩日午夜在线资源一区二区 | 无码人妻少妇色欲AV一区二区| 精品少妇一区二区三区视频| 国产午夜精品一区二区三区| 亚洲国产美国国产综合一区二区| 精品福利视频一区二区三区| 亚洲第一区精品观看| 国产一区二区在线观看| 熟女精品视频一区二区三区| 亚洲.国产.欧美一区二区三区| 国产一区在线电影| 91视频国产一区| 视频一区二区中文字幕| 无码日韩精品一区二区三区免费| 日本一区二区在线播放| 国产天堂一区二区综合| 中文字幕av一区| 日韩人妻无码一区二区三区99 | 亚洲av综合av一区| 国产精品久久亚洲一区二区| 无码精品一区二区三区免费视频| 国产主播福利精品一区二区| 亚洲乱码一区av春药高潮| 色婷婷AV一区二区三区浪潮| 久久精品无码一区二区三区不卡| aⅴ一区二区三区无卡无码| 精品一区二区三人妻视频| 亚洲国产高清在线精品一区| 国产亚洲一区二区精品| 一区精品麻豆入口| 国产第一区二区三区在线观看| 亚洲国产情侣一区二区三区| 中日av乱码一区二区三区乱码| 欧美亚洲精品一区二区| 精品无码人妻一区二区三区| 少妇人妻精品一区二区三区| 国产AV午夜精品一区二区入口|