Selenium 元素定位

2021-08-09 15:23:22 字數 1724 閱讀 4820

ui自動化中元素的定位是最最基本,但也是最讓人頭痛的地方。控制項的動態載入,屬性的動態生成抑或因為開發的懶而造成控制項的識別問題總是自動化測試的噩夢。webdriver作為主流的網頁測試工具提供了非常豐富的識別控制項的方法。這次在寫自動化庫的時候也遇到各種定位問題,著實抓狂了一陣,但最終都解決了。 雖然我們的產品網頁結構並不複雜,但因為xpath, css selector 本身的強大,雖然有時候要繞個彎但webdriver提供的這些方法能應該能解決絕大部分的定位問題。

1. id 定位

selenium提供了find_element_by_id函式,接受id的值為引數,返回乙個webelement的物件

button = driver.find_element_by_id('su')

2. name 定位

selenium提供find_element_by_name函式,接受name的值為引數,返回乙個webelement物件。

textbox = driver.find_element_by_name('wd')

3. class 定位

textbox = driver.find_element_by_class_name('s_ipt')

4. tag 定位

textbox = driver.find_element_by_tag_name('input')

5. link/partial link 定位

通過鏈結的文本來定位,返回乙個鏈結的webelement物件。方法為find_element_by_link_text 和 find_element_by_partial_link_text。 區別是前者必須的引數必須是完整的鏈結文字,不然找不到。後者則只需要鏈結文字的一部分。

link = driver.find_element_by_partial_link_text('關於')

6. xpath 定位

textbox = driver.find_element_by_xpath('//input[@id="kw"]')

textbox = driver.find_element_by_css_selector('#kw')

textbox = driver.find_element_by_css_selector('input.s_ipt')

8. by 定位

除了以上幾種定位方法,selenium還提供一種泛用的方法find_element,接受兩個引數,通過by宣告的定位發放,以及定位的引數

button = drvier.find_element(by.id, 'su')

textbox = driver.find_element(by.class_name,'kw')

9. find_elements 方法

這在前面提到過,普通的方法只會返回符合條件的第乙個物件,用了find_elements的方法會返回html裡面所有符合條件的元素。例如:

find_elements_by_id

find_elements_by_css_selector

find_elements(by.id, 'su')

selenium元素定位

單數形式 複數形式,返回的是乙個列表 使用範圍 a.元素有id屬性 b.id不是動態的,為固定值 driver.find element by id id屬性值 使用範圍 a.元素有id屬性 b.id不是動態的,為固定值 語法 driver.find element by name name屬性值 ...

selenium元素定位

一,元素定位方式 from selenium import webdriver from selenium.webdriver.support import expected conditions as ec import time driver webdriver.chrome driver.ge...

selenium元素定位

1.driver.find element by id id vaule 2.driver.find element by name name vaule 通過name定位元素 因為name屬性可能存在重名的情況,如果重名的話會優先定位該name值第一次出現的元素,可能就不是我們的目標元素 3.dr...