Selenium 对页面元素的操作动作及其语法

Selenium 提供了丰富的操作动作,用于模拟用户在浏览器中的各种交互行为。以下为你详细介绍常见操作动作及其语法,并结合百度网站为例给出 Python 代码示例。

1. 打开网页

  • 语法 :使用 driver.get(url) 方法,其中 driver 是浏览器驱动实例,url 是要打开的网页地址。
  • 示例代码
python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')

2. 元素输入操作

  • 语法 :使用 element.send_keys(text) 方法,element 是定位到的元素,text 是要输入的文本内容。
  • 示例代码:在百度搜索框输入关键词"Python"。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')

3. 元素点击操作

  • 语法 :使用 element.click() 方法,element 是定位到的可点击元素,如按钮、链接等。
  • 示例代码:点击百度搜索按钮。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')
search_button = driver.find_element(By.ID, 'su')
search_button.click()

4. 清除输入框内容

  • 语法 :使用 element.clear() 方法,element 是定位到的输入框元素。
  • 示例代码:清除百度搜索框中的内容。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')
search_box.clear()

5. 获取元素文本内容

  • 语法 :使用 element.text 属性,element 是定位到的元素。
  • 示例代码:获取百度搜索结果的第一个标题文本。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/s?wd=Python')
first_result_title = driver.find_element(By.XPATH, '//div[@class="result c-container"]/h3/a')
title_text = first_result_title.text
print(title_text)

6. 获取元素属性值

  • 语法 :使用 element.get_attribute(attribute_name) 方法,element 是定位到的元素,attribute_name 是要获取的属性名。
  • 示例代码 :获取百度搜索框的 placeholder 属性值。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
placeholder_value = search_box.get_attribute('placeholder')
print(placeholder_value)

7. 页面滚动操作

  • 语法 :使用 driver.execute_script(script) 方法执行 JavaScript 代码来实现页面滚动,script 是 JavaScript 脚本。
    • 滚动到页面底部:driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    • 滚动到指定位置:driver.execute_script("window.scrollTo(0, 500);") (滚动到垂直位置 500 像素处)
  • 示例代码:将百度搜索结果页面滚动到页面底部。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/s?wd=Python')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

8. 切换窗口

  • 语法
    • 获取当前所有窗口句柄:handles = driver.window_handles
    • 切换到指定窗口:driver.switch_to.window(handle)handle 是窗口句柄。
  • 示例代码:假设点击百度页面上的某个链接打开了新窗口,然后切换到新窗口。
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 假设点击某个链接打开新窗口
link = driver.find_element(By.LINK_TEXT, '某个链接')
link.click()

# 获取所有窗口句柄
handles = driver.window_handles
# 切换到新窗口
driver.switch_to.window(handles[-1])

9. 处理弹窗

  • 语法
    • 切换到弹窗:alert = driver.switch_to.alert
    • 接受弹窗(点击确定):alert.accept()
    • 取消弹窗(点击取消):alert.dismiss()
    • 获取弹窗文本:alert_text = alert.text
  • 示例代码:在实际百度页面中较少遇到弹窗,以下为示例代码结构。
python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://example.com')  # 假设该页面有弹窗
try:
    alert = driver.switch_to.alert
    alert_text = alert.text
    print(alert_text)
    alert.accept()
except Exception as e:
    print(f"未找到弹窗: {e}")

10. 关闭浏览器

  • 语法
    • 关闭当前窗口:driver.close()
    • 关闭所有窗口并退出浏览器:driver.quit()
  • 示例代码
python 复制代码
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 执行一系列操作
driver.quit()

这些操作动作可以帮助你完成各种网页自动化任务,根据具体需求灵活组合使用。同时,要注意元素定位的准确性,确保操作能够正确执行。

相关推荐
武陵悭臾4 小时前
网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
python·selenium·网络爬虫·pyautogui·deepseek·鼠标右键模拟·保存链接为htm
2301_793069826 小时前
Java和SQL测试、性能监控中常用工具
java·sql·selenium
刽子手发艺20 小时前
Selenium+OpenCV处理滑块验证问题
opencv·selenium·webpack
bst@微胖子20 小时前
Python高级语法之selenium
开发语言·python·selenium
王小义笔记20 小时前
Postman如何流畅使用DeepSeek
开发语言·测试工具·lua·postman·deepseek
程序员杰哥1 天前
如何写出优秀的测试用例?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
奔跑吧邓邓子2 天前
【Python爬虫(14)】解锁Selenium:Python爬虫的得力助手
开发语言·爬虫·python·selenium
程序员 小濠2 天前
2024Selenium自动化常见问题及解决方式!
自动化测试·软件测试·测试工具·单元测试·测试用例·接口测试·性能测试
测试19982 天前
功能测试与接口测试详解
自动化测试·软件测试·python·功能测试·测试工具·测试用例·接口测试
程序员三藏2 天前
Postman接口测试的cookie,token,session....鉴权
自动化测试·软件测试·测试工具·职场和发展·测试用例·接口测试·postman