selenium元素定位

2022-06-27 21:57:14 字數 3330 閱讀 9970

1.driver.find_element_by_id("id_vaule")

2.driver.find_element_by_name("name_vaule")  :通過name定位元素:因為name屬性可能存在重名的情況,如果重名的話會優先定位該name值第一次出現的元素,可能就不是我們的目標元素

3.driver.find_element_by_class_name("class_name") :通過class_name定位元素:不建議使用,原因html原始碼中,類樣式會同時在多個元素上面使用

4.driver.find_element_by_tag_name("tag_name_vaule")

5.driver.find_element_by_link_text("text_vaule") :需傳全部文字內容

driver.find_element_by_partial_link_text("text_vaule"):可以傳入部分文字內容

6.xpath定位方法

6.1 絕對路徑定位
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[3]/a[3]').click()
6.2 相對路徑定位  建議使用

driver.find_element_by_xpath("//form/span/input").send_keys("金田一少年事件簿")

6.3 使用元素屬性來定位

# and 和 or完成通過多個屬性值定位

# driver.find_element_by_xpath('//*/div[3]/a[3]').click() #或者//*[@id="s-top-left"]/a[3]

# driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys('哈哈')

# driver.find_element_by_xpath("//input[@id='kw' or @class='s_ipt']").send_keys('哈哈')

# 可以使用 * 來代替我們不知道的內容

driver.find_element_by_xpath("//*[@id='kw']").send_keys("金田一少年事件簿")

6.4 通過部分屬性值定位

# starts-with(@屬性名, '匹配開頭') 方法

driver.find_element_by_xpath("//*[starts-with(@name, 'tj_trm')]").click()

# substring(@屬性名, 開始位置, 擷取長度)

driver.find_element_by_xpath("//*[substring(@name, 7)='ideo']").click() #9:指的是從第9個字元開始到最後(包括第9位)

# contains()

driver.find_element_by_xpath("//*[contains(@name, 'tie')]").click()

6.5 使用文字定位       //*[text()='文字值']

driver.find_element_by_xpath("//a[text()='新聞']").click()

driver.find_element_by_xpath("//a[contains(text(),'hao')]").click() #根據文字內容模糊查詢

7.css定位方法

#7.1:絕對路徑
driver.find_element_by_xpath('html body div[1] div[1] div[3] a[3]').click()
#7.2 相對路徑定位

# driver.find_element_by_css_selector('#kw').send_keys('哈哈')

# driver.find_element_by_css_selector('span input.s_ipt').send_keys('哈哈')

#7.3 使用元素屬性定位

# driver.find_element_by_css_selector("input[class='s_ipt']").send_keys('哈哈')

# driver.find_element_by_css_selector("input[class='s_ipt'][maxlength='255']").send_keys('哈哈')

#7.4 使用部分屬性值來匹配

# driver.find_element_by_css_selector("input[class^='s_i']").send_keys('哈哈') # 屬性值以什麼開頭

# driver.find_element_by_css_selector("input[class$='_ipt']").send_keys('哈哈') #屬性值以什麼結尾

# driver.find_element_by_css_selector("input[class*='_ipt']").send_keys('哈哈') #屬性值包含

#7.5 出查詢子元素

# driver.find_element_by_css_selector("div#s-top-left a:first-child").click() 子元素第乙個

# print(driver.find_element_by_css_selector("div#s-top-left a:last-child").click()子元素第二個

# driver.find_element_by_css_selector("div#s-top-left a:nth-child(3)").click() 第n個子元素

#7.6 查詢兄弟元素

driver.find_element(by.css_selector,'div#s-top-left a+a').click()

elements = driver.find_elements(by.css_selector,'div#s-top-left a~a')

for ele in elements:

print(ele.text)

Selenium 元素定位

ui自動化中元素的定位是最最基本,但也是最讓人頭痛的地方。控制項的動態載入,屬性的動態生成抑或因為開發的懶而造成控制項的識別問題總是自動化測試的噩夢。webdriver作為主流的網頁測試工具提供了非常豐富的識別控制項的方法。這次在寫自動化庫的時候也遇到各種定位問題,著實抓狂了一陣,但最終都解決了。雖...

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...