八大元素定位


八種元素定位

1. id,基於元素屬性中id的值來進行定位

2. name

3. link text

4. partial link text

5. classname

6. tagname

7. cssselector

8. xpath 

 

常用的為id、name、xpath

from selenium import webdriver
from time import sleep

# 創建瀏覽器對象
driver = webdriver.Chrome()
# driver.get('http://39.98.138.157/shopxo/index.php?s=/index/user/logininfo.html')
driver.get('http://www.baidu.com')
# driver.maximize_window()
'''
八大元素定位法則:
1. id,基於元素屬性中id的值來進行定位
id類似於人們身份證上的身份證號碼,不出意外都不會重復
2. name:基於元素屬性中name的值來進行定位
類似於人們身份證上的身份證名字,很可能會出現重名
3. link text:主要用於超鏈接進行定位
4. partial link text:link text的模糊查詢版本,類似於數據庫中like %
當模糊查詢匹配到多個符合條件的元素,選取第一個
5. classname:基於元素樣式來進行定位,非常容易遇到重復的
6. tagname:標簽名來進行定位,重復度最高。只有在需要定位后進行二次篩選的情況下使用
7. cssselector:應用相對較多的一種行為,最初IE瀏覽器不支持xpath,完全基於class屬性來實現的定位
8. xpath :目前應用最多的一種行為,基於頁面結構來進行的定位
絕對路徑:從html根路徑下一層一層往下數,找到對應的層級,從而找到元素,除非十萬火急,不要這么寫
相對路徑:基於匹配制度來查找元素,依照xpath語法結構來走
例如://*[@id="kw"]
//表示從根路徑下開始查找
* 任意元素
[] 表示篩選條件(查找函數)
@ 表示基於屬性來篩選,例如@id="kw"表示基於id屬性值為kw的條件來進行篩選
確認xpath路徑是否正確:
1. 在開發者工具elements頁面使用ctrl+f查找,進行判斷
2. 在console中輸入$x()進行校驗
如果要基於text來定位元素
在[]中添加text()="文本內容"進行查找,例如://a[text()='登錄']

當你定位元素,無法直接定位時,可以通過定位子級元素返回父級來獲取元素;/..
//input[@id="kw"]
//input[contains(@id,'kw')]
contains表示進一步查找,匹配項模糊查找
//input[contains(text(),'搜搜搜索')]
'''
# 基於ID定位
# driver.find_element_by_id('id')
# 基於name定位
# driver.find_element_by_name('name')
# 基於link text定位
# driver.find_element_by_link_text('注冊').click()
# 基於partial link text定位,獲取多元素時的操作
# dr = driver.find_elements_by_partial_link_text('百度')
# for d in dr:
# print(d.text)
# class屬性定位
# driver.find_element_by_class_name('am-radius').click()
# tagName定位
# dr = driver.find_elements_by_tag_name('a')
# for d in dr:
# if d.text == '登錄':
# d.click()
# cssSelector定位
# body > div.am-g.my-content > div > div.am-u-sm-12.am-u-md-6.am-u-lg-4.container-right > div.user-form-container > form > div:nth-child(1) > input
# driver.find_element_by_css_selector(
# 'body > div.am-g.my-content > div > div.am-u-sm-12.am-u-md-6.am-u-lg-4.container-right > div.user-form-container > form > div:nth-child(1) > input')
# xpath元素定位
# /html/body/div[4]/div/div[2]/div[2]/form/div[1]/input
# //*[@id="kw"]
# driver.find_element_by_xpath('//input[@name="accounts"]')
sleep(2)
driver.find_element_by_xpath('//*[@id="s-hotsearch-wrapper"]/div/a[1]/div').click()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM