一、八種元素定位方法


<!--百度首頁輸入框的HTML代碼-->
<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">

1. id定位

通過find_element_by_id()來進行定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get('https://www.baidu.com/')
time.sleep(2)
# 通過id定位到百度搜索框
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
driver.find_element_by_id("kw").clear()

driver.quit()

2. name定位

通過find_element_by_name()來進行定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

time.sleep(2)
# 通過name定位百度搜索框
driver.find_element_by_name("wd").send_keys("自動化")
time.sleep(2)
driver.find_element_by_name("wd").clear()

driver.quit()

3. class_name定位

通過find_element_by_class_name()來進行定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

time.sleep(2)
# 通過class_name定位百度搜索框
driver.find_element_by_class_name("s_ipt").send_keys("測試")
time.sleep(2)
driver.find_element_by_class_name("s_ipt").clear()


driver.quit()

4. tag_name定位

通過find_element_by_tag_name()來進行定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

time.sleep(2)
# 通過tag_name定位百度搜索框, elements表示找到符合條件的所有元素,並存在一個列表中
ele = driver.find_elements_by_tag_name("input")
# 從定位到的標簽名為"input"的元素中找到百度搜索框對應的元素
for i in ele:
    if i.get_attribute('id') == "kw":
        i.send_keys("學習")
        time.sleep(2)
        i.clear()

driver.quit()

通過find_element_by_link_text()來進行定位,可以定位頁面中的超鏈接元素

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

time.sleep(2)
# 通過link_text定位貼吧
driver.find_element_by_link_text("貼吧").click()
time.sleep(2)

driver.quit()

通過find_element_by_partial_link_text()來進行定位,可以定位頁面中的超鏈接元素,模糊定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

time.sleep(2)
# 通過partial_link_text定位百度首頁
driver.find_element_by_partial_link_text("首頁").click()
time.sleep(2)

driver.quit()

7. xpath定位

通過find_element_by_xpath()來進行定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

time.sleep(2)
# 通過xpath的絕對路徑定位百度搜索框
driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("絕對路徑")
time.sleep(2)
driver.find_element_by_xpath("s_ipt").clear()

time.sleep(2)
# 通過xpath的相對路徑定位百度搜索框
driver.find_element_by_xpath("//*[@id='kw']").send_keys("相對路徑")
time.sleep(2)
driver.find_element_by_xpath("s_ipt").clear()

time.sleep(2)
# 通過xpath的相對路徑的模糊定位定位百度搜索框
driver.find_element_by_xpath("//*[contains(@class, 'ipt']").send_keys("相對路徑_模糊定位")
time.sleep(2)
driver.find_element_by_xpath("s_ipt").clear()

driver.quit()

8. css_selector定位

通過find_element_by_css_selector()來進行定位

import time
from selenium import webdriver

driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)

driver.get("https://www.baidu.com")

time.sleep(2)
# 通過css_selector的class定位百度搜索框
driver.find_element_by_css_selector(".s_ipt").send_keys("css")
time.sleep(2)
driver.find_element_by_css_selector(".s_ipt").clear()

time.sleep(2)
# 通過css_selector的id定位百度搜索框
driver.find_element_by_css_selector("#kw").send_keys("selector")
time.sleep(2)
driver.find_element_by_css_selector("#kw").clear()

time.sleep(2)
# 通過css_selector的屬性定位百度搜索框
driver.find_element_by_css_selector("[name='wd']").send_keys("屬性")
time.sleep(2)
driver.find_element_by_css_selector("[name='wd']").clear()

time.sleep(2)
# 通過css_selector的層級定位百度搜索框
driver.find_element_by_css_selector("span > input").send_keys("層級")
time.sleep(2)
driver.find_element_by_css_selector("span > input").clear()

driver.quit()

注意:使用element定位到的都是單個元素;而使用elements定位到的是多個元素,存放在一個列表中。

# 對應的八種查找多個元素的方法:
find_elements_by_id
find_elements_by_name
find_elements_by_class_name
find_elements_by_tag_name
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_xpath
find_elements_by_css_selector

9. By類定位方法

'''
通過導入By類,from selenium.webdriver.common.by import By
可以用find_element(by=By.ID, value=None)代表find_element_by...方法
可以用find_elements(by=By.ID, value=None)代表find_elements_by...方法
'''
from selenium.webdriver.common.by import By
By.ID
By.NAME
By.CLASS_NAME
By.TAG_NAME
By.LINK_TEXT
By.PARTIAL_LINK_TEXT
By.XPATH
By.CSS_SELECTOR


免責聲明!

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



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