前言
要想操作 Web 界面上的元素,首先要定位到该元素,Selenium 提供了定位元素的 API,这些方法都被定义在 WebDriver 类中,这些方法都以 find 开头,下面我们以百度首页为例来看一下八种定位方法。
打开百度首页,定位到搜索框,右键->检查,查看搜索框元素。
通过元素 id 定位
方法名称:find_element_by_id
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过元素 id 定位
driver.find_element_by_id("kw").send_keys("selenium")
# 定位搜索按钮并点击
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出浏览器
driver.quit()
通过元素 name 定位
方法名称:find_element_by_name
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过元素 name 定位
driver.find_element_by_name("wd").send_keys("selenium")
# 定位搜索按钮并点击
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出浏览器
driver.quit()
通过元素 class 定位
方法名称:find_element_by_class_name
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过元素 class 定位
driver.find_element_by_class_name("s_ipt").send_keys("selenium")
# 定位搜索按钮并点击
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出浏览器
driver.quit()
通过元素 tag 定位
方法名称:find_element_by_tag_name,tap 名称相同的太多了,一般不会用这个方法。
通过链接文本定位
方法名称:find_element_by_link_text,精确匹配。
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过链接文本定位
driver.find_element_by_link_text("hao123").click()
time.sleep(3)
# 退出浏览器
driver.quit()
通过部分链接文本定位
方法名称:find_element_by_partial_link_text,模糊匹配。
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过部分链接文本定位
driver.find_element_by_partial_link_text("hao").click()
time.sleep(3)
# 退出浏览器
driver.quit()
通过 css 选择器定位
方法名称:find_element_by_css_selector,需要重点掌握。
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过 css 选择器定位
driver.find_element_by_css_selector("#kw").send_keys("selenium")
# 定位搜索按钮并点击
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出浏览器
driver.quit()
通过 xpath 定位
方法名称:find_element_by_xpath,需要重点掌握。
from selenium import webdriver
import time
# 加载浏览器驱动
driver = webdriver.Chrome()
# 访问百度
driver.get("https://www.baidu.com")
# 通过 xpath 定位
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
# 定位搜索按钮并点击
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出浏览器
driver.quit()