掌握Selenium4:详解各种定位方式

Selenium4中有多种元素定位方式,主要包括以下几种:

  1. 通过ID属性定位:根据元素的id属性进行定位。
  2. 通过name属性定位:当元素没有id属性而有name属性时,可以使用name属性进行元素定位。
  3. 通过class name定位:可以根据元素的class属性进行定位。
  4. 通过tag name定位:根据HTML标签名进行定位。
  5. 通过link text定位:根据链接的文本内容进行定位。
  6. 通过partial link text定位:根据链接的部分文本内容进行定位。
  7. 通过css selector定位:根据CSS选择器规则进行定位。
  8. 通过xpath定位:根据XPath表达式进行定位。

分别对应by方法的:

python 复制代码
class By:
    """Set of supported locator strategies."""

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

示例:

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep


class TestCase(object):
    def __init__(self):
        # 初始化方法,创建一个Chrome浏览器实例并打开百度首页。
        self.driver = webdriver.Chrome()
        self.driver.get("https://www.baidu.com/")
        self.driver.maximize_window()  # 窗口最大化
        sleep(1)

    def test_id(self):
        '''
        通过ID定位搜索框,输入"selenium"并点击搜索按钮。
        :return:
        '''
        element = self.driver.find_element(by=By.ID, value="kw")
        element.send_keys("selenium")
        print(type(element))
        self.driver.find_element(by=By.ID, value="su").click()
        sleep(3)
        # self.driver.quit()

    def test_name(self):
        '''
        通过NAME定位搜索框,输入"selenium"并点击搜索按钮。
        :return:
        '''
        element = self.driver.find_element(by=By.NAME, value="wd")
        element.send_keys("selenium")
        print(type(element))
        self.driver.find_element(by=By.ID, value="su").click()
        sleep(3)
        self.driver.quit()

    def test_link_text(self):
        '''
        通过链接文本定位百度首页并点击。
        :return:
        '''
        self.test_id()
        self.driver.find_element(By.LINK_TEXT, value="百度首页").click()
        sleep(3)
        self.driver.quit()

    def test_partiallink_text(self):
        '''
        通过部分链接文本定位百度首页并点击。
        :return:
        '''
        self.test_id()
        self.driver.find_element(By.PARTIAL_LINK_TEXT, value="首页").click()
        sleep(3)
        self.driver.quit()

    def test_xpath(self):
        '''
         通过XPath定位搜索框,输入"selenium"并点击搜索按钮。
        :return:
        '''
        element = self.driver.find_element(by=By.XPATH, value='//*[@id="kw"]')
        element.send_keys("selenium")
        print(type(element))
        self.driver.find_element(by=By.XPATH, value='//*[@id="su"]').click()
        sleep(3)
        self.driver.quit()

    def test_tag(self):
        '''
        通过标签名定位input元素。
        :return:
        '''
        element = self.driver.find_element(by=By.TAG_NAME, value='input')
        print(element)

    def test_css_selector(self):
        '''
        通过CSS选择器定位搜索框,输入"selenium"并点击搜索按钮。
        :return:
        '''
        element = self.driver.find_element(by=By.CSS_SELECTOR, value='#kw')
        element.send_keys("selenium")
        print(type(element))
        self.driver.find_element(by=By.XPATH, value='//*[@id="su"]').click()
        sleep(3)
        self.driver.quit()

    def test_class_name(self):
        '''
        通过类名定位搜索框,输入"selenium"并点击搜索按钮。
        :return: 
        '''
        element = self.driver.find_element(by=By.CLASS_NAME, value='s_ipt')
        element.send_keys("selenium")
        print(type(element))
        self.driver.find_element(by=By.XPATH, value='//*[@id="su"]').click()
        sleep(3)
        self.driver.quit()


if __name__ == '__main__':
    case = TestCase()
    # case.test_id()
    # case.test_name()
    # case.test_link_text()
    # case.test_partiallink_text()
    # case.test_xpath()
    # case.test_tag()
    # case.test_css_selector()
    case.test_class_name()

工具类封装及使用:

python 复制代码
from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

def get_element(driver,*loc):
# 使用find_element方法查找元素,传入定位方式和定位值
    e = driver.find_element(*loc)
# 返回找到的元素
    return e

if __name__ == '__main__':
    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    driver.maximize_window()
    loc = (By.ID, "kw")
    get_element(driver,*loc).send_keys("selenium")
    sleep(10)
相关推荐
临沂GEO11 分钟前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白16 分钟前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲2 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)3 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机3 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6924 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy5 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽5 小时前
真实即粗糙,光滑是伪造
人工智能·python
一次旅行5 小时前
Attention机制从数学到工程:拆解缩放点积+多头注意力|附可运行PyTorch实现与踩坑指南
人工智能·pytorch·python
泡干脆面就番茄5 小时前
NumPy 科学计算完全指南:从数组创建到广播机制
python·numpy