html 定位 python自動化測試 元素定位

2021-10-11 09:02:43 字數 3555 閱讀 1889

1.selenium簡介

selenium是乙個用於web應用程式測試的工具。selenium是直接執行在瀏覽器中,模擬使用者操作web介面。支援多平台:windows、linux、mac ,支援多瀏覽器:ie、firefox、chrome等瀏覽器。

2. 啟動瀏覽器

# 匯入webdriver模組

from selenium import webdriver

# 建立driver物件,指定chrome瀏覽器

driver = webdriver.chrome()

# 建立driver物件,指定firefox瀏覽器

driver = webdriver.firefox()

# 建立driver物件,指定ie瀏覽器

driver = webdriver.ie()

3. 元素定位為了方便我們查詢到相應的元素位置,selenium中的webdriver提供了幾種元素定位方式。常用的有以下8種元素定位方式:

find_element_by_id()

find_element_by_name()

find_element_by_class_name()

find_element_by_tag_name()

find_element_by_link_text()

find_element_by_partial_link_text()

find_element_by_xpath()

find_element_by_css_selector()

3.1 id和name定位id和name是我們常用的元素定位方法,在大多數情況下,開發人員為了區分不同的控制項,使其取的名稱有意義,一般都會使用id和name這兩個屬性。

比如這兩個html**:

利用html**中的id和name屬性對元素進行定位:

通過id=」username」來定位: driver.find_element_by_id("username") 

通過name=」password」來定位: find_element_by_name("password")

3.1.1 tag name和class name定位開發人員除了用id和name兩個元素外,還會使用class name和tag name 這樣的屬性

(1)通過元素中帶的class屬性對元素進行定位:

通過class=」search」來定位: find_element_by_class_name("search")

通過class=」kw」來定位: find_element_by_class_name("kw")

(2)通過tag標籤名對元素進行定位:

通過來定位: find_element_by_tag_name("div") 

通過來定位: find_element_by_tag_name("form")

通過來定位: find_element_by_tag_name("input")

tag name由於出現的次數太多了,所以一般不用這個來定位元素。

3.1.2 link text與partial link text定位

有時候需要操作的元素是乙個文字鏈結,那麼我們可以通過link text或partial link text進行元素定位。

新聞

貼吧知道

(1)通過link text定位元素:

find_element_by_link_text("新聞")

find_element_by_link_text("貼吧")

find_element_by_link_text("知道")

(2)通過partial link text來定位:

find_element_by_partial_link_text("新") 

find_element_by_partial_link_text("吧")

find_element_by_partial_link_text("知")

3.1.3 xpath定位xpath是一種在xml文件中定位元素的語言。xpath定位可分為絕對路徑定位和相對路徑定位。

以乙個層級關係頁面定位為例:

or

比如我們要定位輸入框input中的元素:

(1)通過絕對路徑來定位:

find_element_by_xpath("/html/body/div/div/div/input")
(2)通過相對路徑來定位:

通過自身的id屬性定位: find_element_by_xpath("//input[@id=』input』]") 

通過上級目錄的id屬性定位: find_element_by_xpath("//div[@id=』operate_zn』]/div/div/input")

對比:當我們很難定位到乙個元素時,就可以選擇絕對路徑和相對路徑的方式進行定位,但是絕對路徑有乙個缺點,就是當元素在很多級目錄下時,我們要寫很長的路徑,而且一旦路徑變化,就要修改**,不利於**的維護。

3.1.4 css定位

css定位是一種比較靈活獲取控制項位置的方式,一般情況下定位速度要比xpath快。css使用選擇器來為頁面元素繫結屬性,這些選擇器可以被selenium用作另外的定位策略。

css選擇器常見語法:

以這個html**為例:

(1)以#號表示id的屬性: find_element_by_css_selector("#kw") 

(2)以.號表示class的屬性: find_element_by_css_selector(".s_ipt")

(3)以層級關係來定位屬性: find_element_by_css_selector("form#form>span>input")

這裡就舉了三個型別,css定位方式比較多,如果有需要的話,可以繼續深入學習

總結:

自動化測試中比較重要的其實就是元素定位,也是比較難的。我們可以根據不同的情況,選擇比較合適的元素定位方式。雖然xpath和css可以定位到複雜的元素,但相對於id/name元素定位來說**的維護成本要高一點。相對來說,id/name的定位方式是比較容易上手的,很適合新手。

python自動化測試 元素定位

input id qcreatetask class placeholder italic placeholder 提交 通過id定位 driver.find element by.id,qcreatetask 通過css定位 driver.find element by.css selector,...

UI自動化元素定位

1.id定位 find element by id self,id 2.name定位 find element by name self,name 3.class定位 find element by class name self,name 4.tag定位 find element by tag n...

web自動化 元素定位

x 和 都是chrome開發者工具提供的方法定位元素的時候 根據自己的需求定位到唯一 的乙個元素或者符合自己需要的一組元素。絕對路徑 html開頭表示,從html文件的根節點開始進行查詢,直到找到想要的元素 相對路徑 開頭,表示從html文件的任意位置進行查詢,如果在表示式中間出現77表示從 之前的...