操控元素的基本方法【selenium】

发布于:2025-07-11 ⋅ 阅读:(11) ⋅ 点赞:(0)

通过 WebElement 控制页面元素

在使用 Selenium 定位到网页中的某个元素之后,我们会获得一个 WebElement 对象,这个对象就像是“遥控器”,可以用来控制这个具体的页面组件。

通常,我们可以通过它完成三类操作:

  • 点击元素
  • 向元素中输入内容(如在输入框里键入文字)
  • 获取元素的相关信息(比如获取它显示的文字、属性等)

1. 点击页面上的元素

要模拟点击动作,直接调用 WebElement 的 .click() 方法即可。这个动作其实是通过浏览器驱动,在页面中模拟点击元素的中心位置

比如,如果我们想点击“添加客户”的按钮:

  • 无论是点击 <button> 元素,还是内部的 <span>,只要点击点落在按钮范围内,都会被视为一次成功点击。

这就是 Selenium 模拟真实点击行为的方式——对中心区域执行操作。


2. 向输入框中输入文字

输入文字的方式也很直观,使用 .send_keys() 方法即可。

如果输入框中原本就有提示内容或者旧数据,我们可以在输入前使用 .clear() 方法清空已有文本。

示例:

element = wd.find_element(By.ID, "input1")
element.clear()                # 清空旧内容
element.send_keys('白月黑羽')  # 输入新内容

✅ 适合用于表单填写、搜索框输入等自动化交互场景。


3. 获取元素中的信息

✔ 获取文本内容(可见文字)

使用 WebElement 的 .text 属性,可以获取某个元素在页面上可视的文本内容

element = wd.find_element(By.ID, 'animal')
print(element.text)

不过,.text 获取的只是用户界面上看得见的文字


✔ 获取属性值

如果你想获取元素的某个 HTML 属性,比如 class、href、value 等,可以用 .get_attribute() 方法。

element = wd.find_element(By.ID, 'input_name')
print(element.get_attribute('class'))  # 获取 class 属性值

此外,还可以获取:

  • .get_attribute('outerHTML'):获取整个 HTML 元素的代码
  • .get_attribute('innerHTML'):只获取元素内部的 HTML 内容

✔ 获取输入框中的值

对于 <input> 等表单输入控件,如果你想拿到用户输入的内容,不能用 .text,应该用:

element.get_attribute('value')

示例:

element = wd.find_element(By.ID, "input1")
print(element.get_attribute('value'))  # 打印输入框内容

4. 获取隐藏的或未完全显示的文本

.text 只能拿到在页面中实际显示出来的文字,如果文字被隐藏了(例如用了 display: none),那就拿不到。

这时,我们可以尝试更底层的属性:

  • element.get_attribute('innerText'):只获取可见部分
  • element.get_attribute('textContent'):包含所有文本(哪怕是隐藏的)

它们的差别在于:

  • innerText 更贴近用户界面展示;
  • textContent 更贴近页面原始结构。

✅ 补充:get_attribute 与 JavaScript 的关系

如果你了解 HTML 和 JS,你会发现 Selenium 的 .get_attribute() 方法,其实就是通过 JS 去读取元素的属性。

例如:

element.get_attribute('value') 等同于 JavaScript 中的 element.value
element.get_attribute('innerText') 等同于 JavaScript 的 element.innerText

5. 关闭浏览器窗口

最后,如果你希望在自动化操作完成后关闭浏览器窗口,可以调用 WebDriver 的 .quit() 方法:

wd.quit()

这会彻底关闭浏览器实例,释放资源。


网站公告

今日签到

点亮在社区的每一天
去签到