Python Web 自动化:Selenium 基础操作与元素定位
Selenium 在 Python Web 自动化测试中的基础操作。内容包括浏览器窗口位置与尺寸的设置、网页截图与刷新方法。重点讲解了元素定位的八种方式(ID、Name、Class 等)及其优先级,并演示了 find_element 和 find_elements 的区别。最后涵盖了元素交互操作,如输入文本、点击按钮及清空内容,提供了完整的代码示例。

Selenium 在 Python Web 自动化测试中的基础操作。内容包括浏览器窗口位置与尺寸的设置、网页截图与刷新方法。重点讲解了元素定位的八种方式(ID、Name、Class 等)及其优先级,并演示了 find_element 和 find_elements 的区别。最后涵盖了元素交互操作,如输入文本、点击按钮及清空内容,提供了完整的代码示例。

在浏览器左上角打开,或者在坐标为 (x, y) 的地方打开。
set_window_position(横坐标,纵坐标)
driver.set_window_position(0, 0) # 左上角
driver.set_window_position(200, 300) # 距离左上角 200, 300

设置浏览器窗口大小,长和宽。
set_window_size(长,宽)
driver.set_window_size(800, 400)

get_screenshot_as_file('文件保存路径')
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://baidu.com/')
driver.get_screenshot_as_file('截图.png')
driver.quit()

刷新当前网页。
refresh()
driver.refresh()
from selenium.webdriver.common.by import By
By 中包含八种定位元素。
| 定位方式 | 核心逻辑 | 核心特点 | 适用场景 |
|---|---|---|---|
| By.ID | 通过唯一 id 属性定位 | 速度最快,最稳定,优先使用 | 有唯一 id 的搜索框、登录按钮 |
| By.NAME | 通过 name 定位 | 速度快,比 id 更加常见 | 表单元素,输入框、单选框 |
| By.CLASS_NAME | 通过 class 定位 | 使用范围广 | 元素有特征性 class 属性 |
| By.TAG_NAME | 通过标签名定位 | 适合批量定位同类元素 | 定位所有 链接、 |
| By.LINK_TEXT | 通过超链接完整文本定位 | 精准匹配链接 | 超链接文本固定且完整 |
| By.PARTIAL_LINK_TEXT | 通过超链接部分文本模糊定位 | 灵活无需完整文本 | 链接文本较长/仅部分固定 |
| By.XPATH | XML 路径语法定位 | 能定位所有元素,支持复杂筛选 | 无 ID/name、动态元素、层级嵌套 |
| By.CSS_SELECTOR | CSS 选择器语法定位 | 比 XPath 高效,支持多维度筛选 | 复杂场景 |
优先级:ID > NAME > CLASS_NAME > CSS_SELECTOR > XPATH > TAG_NAME > PARTIAL_TEXT
例如一个网页中的输入框,按钮,图片链接都是这个网页的元素。
通常用 id,name,class 定位。

找到返回单个元素对象,找不到报错。
find_element(定位元素类型,定位元素值)
driver.find_element(By.ID, 'kw')

定位多个符合要求的元素,返回的是一个列表。找到返回的是一个列表,找不到返回空列表。


传入需要输入的字符串。
element.send_keys('dafait')

找到按钮元素 'su'。
submit_btn = driver.find_element(By.ID, "su")
submit_btn.click()

element.clear()
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
input_box = driver.find_element(By.ID, "kw")
input_box.send_keys('dafait')
submit_btn = driver.find_element(By.ID, "su")
submit_btn.click()
time.sleep(2)
driver.quit()

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online