1. 程式人生 > >初學者的Selenium自動化測試指南,基於Python(一)——元素定位

初學者的Selenium自動化測試指南,基於Python(一)——元素定位

    WebDriver是Selenium體系中設計出來操作瀏覽器的一套API,可支援多種程式語言,對於Python來說,可以將WebDriver視為Python的一個用於實現Web自動化的第三方類庫。WebDriver一共提供了八種元素定位方法,我們以百度輸入框和百度搜索框為例來學習,百度輸入框和百度搜索按鈕的程式碼如下:

……

<inputid=”kw”  class=”s_ipt”  autocomplete=”off”  maxlength=”100” value=”“  name=”wd”>

……

<input id=”su”  class=”bg s_btn”  type=”submit” value=”百度一下”>

1、id定位

    HTML規定id屬性在HTML文件中必須是唯一的,WebDriver提供的id定位方法就是通過元素的id屬性來查詢元素。通過id定位百度輸入框與搜尋按鈕,用法如下:

find_element_by_id(“kw”)

find_element_by_id(“su”)

2、name定位

    HTML規定name來指定元素的名稱,name的屬性值在當前頁面可以不唯一。通過name定位百度輸入框:

find_element_by_name(“wd”)

3、class定位

    HTML規定class來指定元素的類名。通過class屬性定位百度輸入框和搜尋按鈕:

find_element_by_class_name(“s_ipt”)

find_element_by_class_name(“bgs_btn”)

4、tag定位

    HTML的本質就是通過tag來定義實現不同的功能,每一個元素本質上也是一個tag。因為一個tag往往用來定義一類功能,所以通過tag識別某個元素的概率很低。通過tag定位百度的輸入框與搜尋按鈕會發現它們完全相同:

find_element_by_tag_name(“input”)

5、link定位

    link定位與前面的幾種定位方法不用,它專門用來定位文字連結。百度輸入框上面的幾個文字連結的程式碼如下:

<ahref="http://news.baidu.com" target="_blank"class="mnav">新聞</a>

<ahref="http://www.hao123.com" target="_blank"class="mnav">hao123</a>

<a href="http://map.baidu.com"target="_blank" class="mnav">地圖</a>

<a href="http://v.baidu.com"target="_blank" class="mnav">視訊</a>

<ahref="http://tieba.baidu.com" target="_blank"class="mnav">貼吧</a>

<ahref="http://xueshu.baidu.com" target="_blank"class="mnav">學術</a>

    通過link定位連結如下:

find_element_by_link_text(“新聞”)

find_element_by_link_text(“hao123”)

find_element_by_link_text(“地圖”)

find_element_by_link_text(“視訊”)

find_element_by_link_text(“貼吧”)

find_element_by_link_text(“學術”)

6、partial link定位

    parial link定位是對link定位的一種補充,有些文字連結會比較長,這個時候我們可以取文字連結的一部分定位,只要這一部分資訊可以唯一地標識這個連結。通過partial link定位百度首頁的文字連結的程式碼如下:

find_element_by_partial_link_text(“新”)

find_element_by_partial_link_text(“hao”)

find_element_by_partial_link_text(“地”)

find_element_by_partial_link_text(“視”)

find_element_by_partial_link_text(“貼”)

find_element_by_partial_link_text(“學”)

7、XPath定位

    Xpath是一種在XML文件中定位元素的語言。因為HTML可以看作XML的一種實現,所以Selenium使用者可以使用這種強大的語言在Web應用中定位元素。同樣以百度輸入框和搜尋按鈕為例:

find_element_by_xpath(“//input[@id=’kw’]”)

find_element_by_xpath(“//input[@id=’su’]”)

    //表示當前頁面某個目錄下,input表示定位元素的標籤名,[@id=’kw’]表示這個元素的id屬性值等於kw。同樣也可以使用其他屬性來定位:

find_element_by_xpath(“//input[@class=’s_ipt’]”)

find_element_by_xpath(“//input[@class=’bgs_btn’]”)

find_element_by_xpath(“//input[@autocomplete=’off’]”)

find_element_by_xpath(“//input[@maxlength=’100’]”)

find_element_by_xpath(“//input[@type=’submit’]”)

8、CSS定位

    CSS是一種語言,它是用來描述HTML和XML文件的表現。CSS使用選擇器來為頁面元素繫結屬性。這些選擇器可以被 selenium 用作另外的定位策略。

    下面同樣以百度輸入框和搜尋按鈕為例介紹 CSS 定位的用法。

……

<span class="bgs_ipt_wr">

<input id="kw" class="s_ipt"autocomplete="off" maxlength="100" value=""name="wd">

</span>

<spanclass="bg s_btn_wr">

<input id="su" class="bg s_btn"type="submit"  value="百度一下">

</span>

……

(1)通過class屬性定位:

find_element_by_css_selectork(“.s_ipt”)

find_element_by_css_selectork(“.bgs_btn”)

    點號(.)表示通過class屬性來定位元素。

(2)通過id屬性定位:

find_element_by_css_selectork(“#kw”)

find_element_by_css_selectork(“#su”)

(3)通過標籤名定位:

find_element_by_css_selector("input")

    在 CSS 語言中用標籤名定位元素不需要任何符號標識,直接使用標籤名即可,但標籤名重複的概率非常大,所以通過這種方式很難唯一的標識一個元素。

(4)通過父子關係定位:

    find_element_by_css_selector("span>input")

    有標籤名叫span的父親元素,查詢它的所有標籤名叫 input 的子元素。

(5)通過屬性定位:

    find_element_by_css_selector("[autocomplete='off']")

    find_element_by_css_selector("[type='submit']")

    在 CSS 當中也可以使用元素的任意屬性,只要這些屬性可以唯一的標識這個元素。


相關推薦

初學者Selenium自動化測試指南基於Python——元素定位

    WebDriver是Selenium體系中設計出來操作瀏覽器的一套API,可支援多種程式語言,對於Python來說,可以將WebDriver視為Python的一個用於實現Web自動化的第三方類庫。WebDriver一共提供了八種元素定位方法,我們以百度輸入框和百度搜

初學者Selenium自動化測試指南基於Python——cookie相關操作

Webdriver中操作 cookie 的相關方法:     get_cookies()                       獲得所有 cookie 資訊     get_cookie(name)               返回有特定 name 值有 cooki

Teuthology的使用與Ceph自動化測試用例的編寫

這裡將簡單介紹teuthology中自動化測試的用例的編寫。Ceph的自動化測試使用yaml檔案描述,如下的例子搭建了一個三節點的Ceph叢集,終端在叢集搭建好後停止在python的interactive上,允許測試著呼叫相關的函式與叢集互動。 rol

Selenium自動化測試讓ChromeDriver中不顯示“正受到自動測試軟體控制”

背景: 在用Selenium做自動化測試的時候,預設ChromeDriver是會提示“Chrom正受到自動測試軟體控制”的。如下圖這樣。但我們有些場景下,不希望這個提示出現。本文探索了幾種語言去掉這個提示條的方法,希望對小夥伴有幫助。    1. Java ChromeOptions

Appium python自動化測試系列之Capability介紹

語言 路徑 pla apk 過程 5.1 基礎 針對 driver ?5.1 Capability介紹 5.1.1 什麽是Capability 在講capability之前大家是否還記得在講log時給大家看過的啟動時的日誌?在我們的整個啟動日誌中會出現一些配置信息,其實那些

Appium python自動化測試系列之認識Appium

ndt require 差異 make python自動化 復雜 appium launched interface ?4.1界面認識 在之前安裝appium的時候說過我們有兩種方法安裝,也就有兩種結果,一種是有界面的,一種是沒有界面的,首先我們先講一下有界面的,以及界面有

Python+Selenium 自動化實現例項-處理分頁pagination

  場景   對分頁來說,我們最感興趣的是下面幾個資訊 總共有多少頁 當前是第幾頁 是否可以上一頁和下一頁 程式碼 下面程式碼演示如何獲取分頁總數及當前

RobotFramework自動化測試框架的基礎關鍵字

速查 語言 left 自動化 logs python語言 添加 src bsp 1.1.1 如何快速查詢某一個關鍵字的API說明 鼠標選中我們關鍵字,同時按住Ctrl+Alt鍵,即可出來該關鍵字的幫助API以及使用示例 1.1.2 如何快速補全

RobotFramework自動化測試框架的基礎關鍵字

選擇 作用 image val 結果 run comm 意思 框架 1.1.1 Run Keyword If判斷的使用 Run Keyword If是一個常用的用來做邏輯判斷的關鍵字,意思是如果滿足了某一個判斷條件,然後就會執行關鍵字,我們對list3中放入0

洗禮靈魂修煉python3--從一個簡單的print代碼揭露編碼問題運行原理和語法習慣

比較 編譯 windows 機器 函數 容易 打印字符 出現 無法 前期工作已經準備好後,可以打開IDE編輯器了,你可以選擇python自帶的IDLE,也可以選擇第三方的,這裏我使用pycharm——一個專門為python而生的編譯器 第一個python代碼當然是所有開發語

洗禮靈魂修煉python7--元組集合不可變集合

服務器 .cn mov src 核心 是什麽 報錯 move 之前 前面已經把列表的基本用法講解完 接著講python的幾大核心之——元組(tuple) 1.什麽是元組? 類似列表,但為不可變對象,之前提到列表是可變對象,所謂可變對象就是支持原處修改,並且在修改前後對應的內

洗禮靈魂修煉python9--靈性的字符串

不可變 字符串格式化 處理 一個 wid 手動 自身 方法 不可變對象 python幾大核心之——字符串 1.什麽是字符串 其實前面說到數據類型時說過了,就是帶有引號的參數,“”引號內的一切東西就是字符串,字符串又叫文本。 2.創建字符串的兩種方式: 3.字符串的方法:

洗禮靈魂修煉python16--列表進階話題—>上節作業講解+copy模塊

ima 參數 span 分片 斐波那契數 介紹 生成器 strong 列表解析 上節課後作業: 1.使用列表解析輸出結果:[(0,0),(0,2),(2,0),(2,2)] 方法1: 方法2: 方法3: 2.使用列表生成器打印斐波那契數列 3.使用列表解析生

python selenium系列元素定位方式

bdr process sta css_ 講解 term 其他 1.5 win 一 前言元素定位,是操作元素的第一步,也是WebUI自動化的難點和核心。 二 元素定位方法selenium提供了內置的方法完成對待操作元素的定位,主要分為8類,其中,每類又可細分為定位單個元素和

web前端4—— 常用標籤1 洗禮靈魂修煉python55--爬蟲篇—知識補充—RFC 2616 http狀態碼

標題標籤h1~h6 顧名思義,這些就是把字型設定為大字型的,就如部落格園的這個編輯器裡的格式:   不信的話我們自己設定看看:好的,從本篇文章開始,我們需要動手了   <!DOCTYPE html> <html lang="en"> <

2.RobotFramework自動化測試框架搭建--通過pip推薦

本文基於Windows10,Python27   一.安裝Python python-2.7.10.amd64.msi 1.直接雙擊執行,下一步下一步...... 2.配置環境變數,在系統變數path後面加上C:\Python27和C:\Python27\Scri

win10下基於pythonanaconda安裝gpu版本的TensorFlow以及kears深度學習框架

%%——2018/5/3更新——–%% 現在回頭來看,我之前寫的這篇在win10下安裝gpu版本的tensorflow貌似寫得有點複雜了… 現在來總結一下: 裝gpu版本的tensorflow需要以下一些準備: 需要安裝cuda以及對應的cudnn,

python3.5+selenium3.4自動化測試7_selenium的Webdriver_API整理

7.設定等待時間 #匯入time包 import time #新增智慧等待 driver.implicitly_wait(30) #新增固定休眠時間 time.sleep(5)

洗禮靈魂修煉python14--模組decimal fractionsoperatorcollections以及精度介紹

decimal1.作用:用於浮點數計算。相比內建的二進位制浮點數實現 float這個型別有助於 金融應用和其它需要精確十進位制表達的場合,控制精度,控制舍入以適應法律或者規定要求,確保十進位制數位精度,

Android自動化測試-從入門到入門3Espresso入門

https://segmentfault.com/a/1190000004355178 根據該系列之前的兩篇文章:Hello Testing和Testing APIs,我們已經對Android自動化測試的整體背景有了一些瞭解。還記得第一篇文章裡我提到過的基本思路麼?