初學者的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
洗禮靈魂,修煉python(3)--從一個簡單的print代碼揭露編碼問題,運行原理和語法習慣
比較 編譯 windows 機器 函數 容易 打印字符 出現 無法 前期工作已經準備好後,可以打開IDE編輯器了,你可以選擇python自帶的IDLE,也可以選擇第三方的,這裏我使用pycharm——一個專門為python而生的編譯器 第一個python代碼當然是所有開發語
洗禮靈魂,修煉python(7)--元組,集合,不可變集合
服務器 .cn mov src 核心 是什麽 報錯 move 之前 前面已經把列表的基本用法講解完 接著講python的幾大核心之——元組(tuple) 1.什麽是元組? 類似列表,但為不可變對象,之前提到列表是可變對象,所謂可變對象就是支持原處修改,並且在修改前後對應的內
洗禮靈魂,修煉python(9)--靈性的字符串
不可變 字符串格式化 處理 一個 wid 手動 自身 方法 不可變對象 python幾大核心之——字符串 1.什麽是字符串 其實前面說到數據類型時說過了,就是帶有引號的參數,“”引號內的一切東西就是字符串,字符串又叫文本。 2.創建字符串的兩種方式: 3.字符串的方法:
洗禮靈魂,修煉python(16)--列表進階話題—>上節作業講解+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 洗禮靈魂,修煉python(55)--爬蟲篇—知識補充—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下基於python(anaconda)安裝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)
洗禮靈魂,修煉python(14)--模組decimal, fractions,operator,collections以及精度介紹
decimal1.作用:用於浮點數計算。相比內建的二進位制浮點數實現 float這個型別有助於 金融應用和其它需要精確十進位制表達的場合,控制精度,控制舍入以適應法律或者規定要求,確保十進位制數位精度,
Android自動化測試-從入門到入門(3)Espresso入門
https://segmentfault.com/a/1190000004355178 根據該系列之前的兩篇文章:Hello Testing和Testing APIs,我們已經對Android自動化測試的整體背景有了一些瞭解。還記得第一篇文章裡我提到過的基本思路麼?