Selenium 常见控件定位方法 L1

1、常见控件定位方法

目录

  • HTML铺垫
  • Selenium八大定位方式
  • 常用定位方式练习

HTML铺垫

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试人论坛</title>
</head>
<body>
<a href="https://ceshiren.com/" class="link">链接</a>
</body>
</html>
  • 标签:<a>
  • 属性:href
  • 类属性: class

Selenium定位方式

Selenium提供了八种定位方式:Locator strategies | Selenium

方式 描述
class name class 属性对应的值
css selector(重点) css 表达式
id(重点) id 属性对应的值
name(重点) name 属性对应的值
link text 查找其可见文本与搜索值匹配的锚元素
partial link text 查找其可见文本包含搜索值的锚元素。如果多个元素匹配,则只会选择第一个元素。
tag name 标签名称
xpath(重点) xpath表达式

selenium 常用定位方式

#格式: 
driver.find_element_by_定位方式(定位元素)
driver.find_element(By.定位方式, 定位元素) 
# 示例,两种方式作用一模一样
# 官方建议使用下面的方式
driver.find_element_by_id("su")
driver.find_element(By.ID, "su") 

通过 id 定位

  • 格式: driver.find_element(By.ID, "ID属性对应的值")
from selenium import webdriver
import time
from selenium.webdriver.common.by import By

def id_position_method():

    # 实例化chromedriver
    driver = webdriver.Chrome()
    # 打开网站
    driver.get('http://www.ceshiren.com')
    # 等待一秒
    time.sleep(1)
    # 点击“精华帖”
    driver.find_element(By.ID,"ember35").click()
    # 等待两秒
    time.sleep(2)

if __name__ == '__main__':
    id_position_method()

name 定位

  • 格式: driver.find_element(By.NAME, "Name属性对应的值")
from selenium import webdriver
import time
from selenium.webdriver.common.by import By

def name_position_method():

    # 实例化chromedriver
    driver = webdriver.Chrome()
    # 打开网站
    driver.get('http://www.baidu.com')
    # 等待一秒
    time.sleep(1)
    # 点击更多
    driver.find_element(By.NAME,"tj_briicon").click()
    # 等待两秒
    time.sleep(2)

if __name__ == '__main__':
    name_position_method()

css selector 定位

  • 格式: driver.find_element(By.CSS_SELECTOR, "css表达式")
  • 复制绝对定位
  • 编写 css selector 表达式(后面章节详细讲解)

xpath 定位

  • 格式: driver.find_element(By.XPATH, "xpath表达式")
  • 复制绝对定位
  • 编写 xpath 表达式(后面章节详细讲解)

link 定位

  • 格式:
    • driver.find_element(By.LINK_TEXT,"文本信息")

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


def web_locate():
    # 首先需要实例化driver对象,Chrome()一定要加括号
    driver = webdriver.Chrome()
    # 打开一个网页
    driver.get("https://vip.ceshiren.com/#/ui_study")
    # 1. ID定位, 第一个参数传递定位方式,第二参数传递定位元素,调用这个方法的返回值为WebElement
    # web_element = driver.find_element(By.ID, "locate_id")
    # web_element = driver.find_element_by_id("locate_id")
    # print(web_element)
    # 2. Name定位,
    # 如果没有报错,证明元素找到了
    # 如果报错 no such element 代表,元素定位可能出现错
    # driver.find_element(By.NAME, "locate11111") #错误示例
    # driver.find_element(By.NAME, "locate")
    # 3. Css 选择器定位
    # driver.find_element(By.CSS_SELECTOR, "#locate_id > a > span")
    # 4. xpath 表达式定位
    # driver.find_element(By.XPATH, '//*[@id="locate_id"]/a/span')
    # 5. 通过链接文本的方式 (1) 元素一定是a标签 2. 输入的元素为标签内的文本
    # driver.find_element(By.LINK_TEXT, "元素定位")

if __name__ == '__main__':
    web_locate()