1. 程式人生 > >Selenium-WebDriver API命令與操作——八種元素定位

Selenium-WebDriver API命令與操作——八種元素定位

原文地址:http://www.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver-api-commands-and-operations

(本文只針對python部分翻譯)

首先申明一點:本人英語水平很爛,做此翻譯僅僅用於更深入地去理解webdriver的使用方法。

一、獲取頁面

使用WebDriver的第一步是開啟一個頁面,通常呼叫get來做這件事:

driver.get("http://www.google.com");
包括作業系統/瀏覽器等諸多因素,WebDriver不會自行等待頁面載入。某些情況下,在頁面還沒有完全加載出來前,WebDriver可能已經失去控制了。為了確保穩定性,可使用“顯式等待”和“隱式等待”,等待所需要定位的元素出現在頁面再進行操作。

顯式等待:

隱式等待:

二、定位元素

在WebDriver中定位元素有兩種方式:通過建立例項或者頁面元素。每一種語言都有“Find Element”和“Find Elements”兩種方法。前者返回的是與查詢對應的元素物件,如果該元素沒有發現,則丟擲異常。後者返回一個多個頁面元素的列表,如果沒有匹配到查詢的DOM元素,該列表為空。

Find方法有一個By定位物件,下面列出By的使用方法:

1、By ID

這是定位元素最高效也是首選的方法,常見的問題是UI開發者做了不唯一或者動態變化的id,這兩種方式都應當避免,為元素設定一個類都比動態id更合適。

例子如下:

HTML:

<div id="coolestWidgetEvah"
>...</div>
Python程式碼:
element = driver.find_element_by_id("coolestWidgetEvah")

or

from selenium.webdriver.common.by import By
element = driver.find_element(by=By.ID, value="coolestWidgetEvah")

2、By Class Name

本案例中,類即為DOM元素的屬性,通常很多DOM元素的類名是相同的,因此如果查詢一組相同類名的元素,該方法成了更合適的選擇。

例子如下:

HTML:

<div
class="cheese"><span>Cheddar</span></div><div class="cheese"><span>Gouda</span></div
Python程式碼:
cheeses = driver.find_elements_by_class_name("cheese")

or

from selenium.webdriver.common.by import By
cheeses = driver.find_elements(By.CLASS_NAME, "cheese")

3、By Tag Name

即,DOM元素的標籤名

例子如下:

HTML:

<iframe src="..."></iframe>
Python程式碼:
frame = driver.find_element_by_tag_name("iframe")

or

from selenium.webdriver.common.by import By
frame = driver.find_element(By.TAG_NAME, "iframe")
4、By Name

通過匹配元素名稱屬性查詢元素

例子如下:

HTML:

<input name="cheese" type="text"/>
Python程式碼:
cheese = driver.find_element_by_name("cheese")

or

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.NAME, "cheese")
5、By Link Text

通過可見文字查詢超連結元素

例子如下:

HTML:

<a href="http://www.google.com/search?q=cheese">cheese</a>>
Python程式碼:
cheese = driver.find_element_by_link_text("cheese")

or

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.LINK_TEXT, "cheese")
6、By Partial Link Text

通過可見文字模糊查詢超連結元素

例子如下:

HTML:

<a href="http://www.google.com/search?q=cheese">search for cheese</a>>

Python程式碼:

cheese = driver.find_element_by_partial_link_text("cheese")

or

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.PARTIAL_LINK_TEXT, "cheese")
7、By CSS

顧名思義,它是CSS的一種定位策略。通常本地瀏覽器都支援,請通過w3c css selectors獲取常用CSS選擇器的列表清單,如果瀏覽器不支援CSS查詢,請使用SizzleIE 6、7和ff3.0目前使用Sizzle作為css查詢引擎。

注意,每個瀏覽器不同,對應CSS的版本也不同。

例子如下:

HTML:

<div id="food"><span class="dairy">milk</span><span class="dairy aged">cheese</
Python:
cheese = driver.find_element_by_css_selector("#food span.dairy.aged")

or

from selenium.webdriver.common.by import By
cheese = driver.find_element(By.CSS_SELECTOR, "#food span.dairy.aged")

8、By Xpath

WebDriver可以隨時隨地使用Xpath功能,如果瀏覽器不支援Xpath,而我們又這樣做的話,將會導致意想不到的錯誤,除非你懂得不同的XPath引擎之間的差異。

有點抽象,請看例子:

HTML:

<input type="text" name="example" />
<INPUT type="text" name="other" />
Python程式碼:
inputs = driver.find_elements_by_xpath("//input")

or

from selenium.webdriver.common.by import By
inputs = driver.find_elements(By.XPATH, "//input")
匹配到的結果(數量)如下: 有時候,HTML元素不需要顯式顯示宣告屬性,因為它有一個預設值。例如,一個input標籤不需要一個type屬性,因為它預設為text。在WebDriver中使用xpath的經驗法則是,不要期望能夠匹配到這些隱式屬性。

說明:翻譯中的css與xpath講的很抽象,看的我糊里糊塗的,其實真實操作中並沒有這麼複雜

相關推薦

Selenium-WebDriver API命令操作——元素定位

原文地址:http://www.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver-api-commands-and-operations (本文只針對python部分翻譯) 首先申明一點:本人英語水平很爛,做此翻

Selenium 3+Java自動化(4)】-元素定位

pub nbsp 百度搜索 name tail webdriver nqa pan sss 1 package com.mypro.jase; 2 3 import org.openqa.selenium.By; 4 import org.openqa.sele

Selenium元素定位方法

前言:     我們在做WEB自動化時,最根本的就是操作頁面上的元素,首先我們要能找到這些元素,然後才能操作這些元素。工具或程式碼無法像我們測試人員一樣用肉眼來分辨頁面上的元素。那麼我們怎麼來定位他們呢? 在學習元素定位之前,我們最好能懂一點html的知識。 web driver提供

Selenium+Python之元素定位方法

如有疑問,可以留言或私信問我喲~ 一、id定位 driver.find_element_by_id("txtUaserName").send_keys("容音@lily") 二、name定位 driver.find_element_by_name("username"

python2.7運行selenium webdriver api報錯Unable to find a matching set of capabilities

fin ssi sage strong 有關 fire IT ref update 在火狐瀏覽器33版本,python2.7運行selenium webdriver api報錯:SessionNotCreatedException: Message: Unable to f

Docker 常用命令操作

auto 行數 文件夾 works 操作 接受 ports uil rac 介紹 此命令集合版本為 1.11.1 及以上 基礎類 查看docker信息 # 查看docker版本 docker version # 顯示docker系統的信息 docker

Selenium webdriver api 呼叫屬性方法 (文件手冊)

 Selenium webdriver api 呼叫屬性方法 (文件手冊) from selenium import webdriver driver=webdriver.Firefox() driver.get(r'http://www.baidu.com/') print 'dri

selenium webdriver API詳解(一)

  本系列主要講解webdriver常用的API使用方法(注意:使用前請確認環境是否安裝成功,瀏覽器驅動是否與谷歌瀏覽器版本對應)   一:開啟某個網址  from selenium import webdriver # 匯入webdriverdriver = webdriver.Chro

Selenium WebDriver API 進階使用,模組化引數化進行自動化測試設計

WebDriver API 進階使用 元素定位 我們知道,WebDriver API的呼叫以及自動化測試,務必從頁面元素的定位開始,WebDriver提供了一系列的定位符以便使用元素定位方法。常見的定位符有以下幾種: id name class name tag link te

Python+Selenium WebDriver API:瀏覽器及元素的常用函式及變數整理總結

      由於網頁自動化要操作瀏覽器以及瀏覽器頁面元素,這裡筆者就將瀏覽器及頁面元素常用的函式及變數整理總結一下,以供讀者在編寫網頁自動化測試時查閱。 from selenium import webdriver driver=webdriver.Firefox()

Debian Linux常用命令操作備忘

screen 建立一個虛擬的終端(screen),在screen中執行需要長時間執行的程式可以避免由於ssh斷開導致程式終止 $ screen -S <name> //建立一個screen $ screen -list //列出已經存在的

2 Docker常用命令操作

1 映象操作 操作 命令 說明 檢索 docker search 關鍵字 eg:docker search redis hub.docker.com上檢索映象的詳細資訊

Selenium Webdriver之Chrome瀏覽器操作小記

Selenium Selenium 是一套跨平臺的瀏覽器自動化測試框架(工具),支援在多種系統環境、多種瀏覽器環境下使用,還可以使用多種程式語言來編寫測試。 Selenium 有多個專案構成,形成了一個多功能的測試系統: Selenium Core:支援DHTML 的

Selenium Webdriver API(2)

font 瀏覽器 find keys family input box __main__ otto Selenium Webdriver API(2) 15、獲取元素基本信息 #啟動IE瀏覽器driver = webdriver.Ie(executable_path="IE

shell程式設計基礎(3.常用概念命令操作

5訊號處理 訊號就是系統向指令碼或命令發出的訊息,告知它們某個事件的發生。這些事件通常是記憶體錯誤,訪問許可權問題或某個使用者試圖停止你的程序。訊號實際上是一些數字。下表列出了最常用的訊號及它們的含義列出所有訊號: >kill –l HUP INT QUIT ILL

Selenium webdriver常用命令彙總

這段時間使用selenium webdriver做UI自動化,積累了一些心得,彙總了常用的命令。   1、查詢某個元素是否存在: bot.existElement(By.xpath("//a[contains(text(),'寧波測試商品002')]"))   2、根據x

Selenium Webdriver API(5)

pri paste bsp 頁面 pty keys 使用命令 self visit Selenium Webdriver API(5)31、鍵盤操作-F12#encoding=utf-8import timeimport unittestfrom selenium impo

Selenium2+python自動化6-元素元素定位(Firebug和firepath)

插件 end 選擇 text www. fin pat 重點 進行 前言 自動化只要掌握四步操作:獲取元素,操作元素,獲取返回結果,斷言(返回結果與期望結果是否一致),最後自動出測試報告。本篇主要講如何用firefox輔助工具進行元素定位。元素定位在這四個環節中是至關

python+selenium高亮顯示正在操作的頁面元素

nbsp quit 設置 函數 net fin 正在 ive get 原文地址:https://blog.csdn.net/wxstar8/article/details/80801405 from selenium import webdriver import u

Selenium3+python自動化6-元素元素定位(Firebug和firepath)

https://www.cnblogs.com/yoyoketang/p/6123834.html https://www.cnblogs.com/yoyoketang/p/6123890.html # coding:utf-8from selenium import webdriver