Python Selenium WebDriver API - 元素对象的定位

本文详细介绍了Python Selenium WebDriver API中用于定位网页元素的各种方法,包括通过ID、name、class、tag name、link text、partial link text、CSS selector和xpath等。每个方法都有对应的find_element和find_elements函数,用于获取单个或多个元素,并提供了示例代码。

目录

通过ID查找

通过name查找

通过classname查找

通过tag name标签名称查找

通过链接的全部文字定位

通过链接中的部分文字定位

通过CSS定位 

通过xpath定位


通过ID查找

find_element(elements)_by_id

find_element_by_id() 通过id信息查找元素,内部调用find_element(by=By.ID, value=None)方法,找到与之匹配的第一个元素,返回WebElement对象,元素查找失败报NoSuchElementException

find_elements_by_id() 通过id信息查找元素,内部调用find_elements(by=By.ID, value=None)方法, 找到所有与之匹配的元素,返回WebElement对象列表,元素查找失败报NoSuchElementException

源码如下:

def find_element_by_id(self, id_):
    """Finds an element by id.

    :Args:
     - id\_ - The id of the element to be found.

    :Returns:
     - WebElement - the element if it was found

    :Raises:
     - NoSuchElementException - if the element wasn't found

    :Usage:
        element = driver.find_element_by_id('foo')
    """
    return self.find_element(by=By.ID, value=id_)
def find_elements_by_id(self, id_):
    """
    Finds multiple elements by id.

    :Args:
     - id\_ - The id of the elements to be found.

    :Returns:
     - list of WebElement - a list with elements if any was found.  An
       empty list if not

    :Usage:
        elements = driver.find_elements_by_id('foo')
    """
    return self.find_elements(by=By.ID, value=id_)

实例:通过id信息查找百度搜索框 

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r'D:\software\python\python37\Scripts\chromedriver.exe') 
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_element_by_id('kw')  #通过id查找元素
print(element) 
#输出<selenium.webdriver.remote.webelement.WebElement
# (session="644354633e06761d0a3360a035698812", element="6ad044fa-33c0-4784-ae9a-0b4363adb2f3")>
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r'D:\software\python\python37\Scripts\chromedriver.exe') 
driver.get("https://www.baidu.com") #打开网页
driver.maximize_window()

element = driver.find_elements_by_id('kw') #查找所有id值为kw的元素,返回一个列表
print(element) #输出[<selenium.webdriver.remote.webelement.WebElement
# (session="0b7c3cbcf36d613791f63916c75f4056", element="1d13d101-5147-4cbd-ad12-e917857512bf")>]

备注:页面的id信息是唯一的,使用id查找可以保证唯一性,缺点是某些元素没有id属性值,无法使用此属性定位

通过name查找

find_element(elements)_by_name 

find_element_by_name() 通过name信息查找元素,内部调用find_element(self, by=By.NAME, value=None)方法,找到与之匹配的第一个元素,,返回We

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值