带你认识Selenium函数

Selenium除了用于Web应用程序的测试外,还可以执行许多自动化操作。以下是一些Selenium可以实现的功能,并附带相应的代码示例来详细说明:

  1. 自动化操作

使用Selenium,我们可以模拟用户的行为,如点击、输入、滚动等。

复制代码

python复制代码

|---|----------------------------------------------------------|
| | from selenium import webdriver |
| | from selenium.webdriver.common.keys import Keys |
| | from selenium.webdriver.common.by import By |
| | |
| | # 初始化浏览器驱动 |
| | driver = webdriver.Chrome() |
| | |
| | # 打开网页 |
| | driver.get('https://www.example.com') |
| | |
| | # 查找元素并点击 |
| | search_box = driver.find_element(By.ID, 'search-box') |
| | search_box.send_keys('Selenium') |
| | search_box.send_keys(Keys.RETURN) |
| | |
| | # 关闭浏览器 |
| | driver.quit() |

  1. 跨浏览器测试

Selenium支持多种浏览器,只需更换对应的WebDriver即可。

复制代码

python复制代码

|---|---------------------------------|
| | # 对于Firefox浏览器 |
| | driver = webdriver.Firefox() |
| | |
| | # 对于Chrome浏览器 |
| | driver = webdriver.Chrome() |
| | |
| | # 对于Edge浏览器 |
| | driver = webdriver.Edge() |
| | |
| | # ... 以此类推,根据需要选择浏览器 |

  1. 截图功能

Selenium允许我们捕获当前页面的截图。

复制代码

python复制代码

|---|--------------------------------------------------------------------------------|
| | from selenium import webdriver |
| | from selenium.webdriver.chrome.service import Service |
| | from webdriver_manager.chrome import ChromeDriverManager |
| | |
| | # 初始化浏览器驱动 |
| | driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) |
| | |
| | # 打开网页 |
| | driver.get('https://www.example.com') |
| | |
| | # 截图 |
| | driver.save_screenshot('screenshot.png') |
| | |
| | # 关闭浏览器 |
| | driver.quit() |

  1. 执行JavaScript脚本

Selenium提供了执行JavaScript代码的方法。

复制代码

python复制代码

|---|-------------------------------------------------------|
| | from selenium import webdriver |
| | |
| | driver = webdriver.Chrome() |
| | driver.get('https://www.example.com') |
| | |
| | # 执行JavaScript脚本 |
| | driver.execute_script("alert('Hello, Selenium!')") |
| | |
| | # 关闭浏览器 |
| | driver.quit() |

  1. 表单验证测试

Selenium可以模拟表单提交,并检查验证结果。

复制代码

python复制代码

|---|------------------------------------------------------------------|
| | from selenium import webdriver |
| | from selenium.webdriver.common.by import By |
| | from selenium.common.exceptions import NoSuchElementException |
| | |
| | driver = webdriver.Chrome() |
| | driver.get('https://www.example.com/login') |
| | |
| | # 输入用户名和密码 |
| | username_input = driver.find_element(By.ID, 'username') |
| | username_input.send_keys('my_username') |
| | |
| | password_input = driver.find_element(By.ID, 'password') |
| | password_input.send_keys('my_password') |
| | |
| | # 提交表单 |
| | submit_button = driver.find_element(By.ID, 'submit') |
| | submit_button.click() |
| | |
| | try: |
| | # 检查是否出现错误消息 |
| | error_message = driver.find_element(By.ID, 'error-message') |
| | print("Error:", error_message.text) |
| | except NoSuchElementException: |
| | print("Form submitted successfully!") |
| | |
| | # 关闭浏览器 |
| | driver.quit() |

  1. 等待AJAX请求完成

Selenium提供了显式等待(Explicit Waits)来处理AJAX请求。

复制代码

python复制代码

|---|----------------------------------------------------------------------------------|
| | from selenium import webdriver |
| | from selenium.webdriver.common.by import By |
| | from selenium.webdriver.support.ui import WebDriverWait |
| | from selenium.webdriver.support import expected_conditions as EC |
| | |
| | driver = webdriver.Chrome() |
| | driver.get('https://www.example.com/ajax-page') |
| | |
| | # 等待某个元素出现 |
| | wait = WebDriverWait(driver, 10) |
| | element = wait.until(EC.visibility_of_element_located((By.ID, 'my-element'))) |
| | |
| | # 执行后续操作 |
| | print(element.text) |
| | |
| | # 关闭浏览器 |
| | driver.quit() |

  1. 与其他测试框架集成

Selenium可以很容易地与unittest、pytest等测试框架集成,实现测试用例的编写和运行。

以pytest为例,你可以编写如下的测试用例:

复制代码

python复制代码

|---|------------------------------------------------|
| | import pytest |
| | from selenium import webdriver |
| | from selenium.webdriver.common.by import By |
| | |
| | @pytest.fixture(scope="module") |
| | def driver(request): |
| | wd = webdriver.Chrome() |
| | wd.implicitly_wait(10) |
| | request.addfinalizer(wd.quit) |
| | return wd |
| | |
| | def test_example_com(driver): |
| | driver.get("https://www.example.com") |
| | assert "Example Domain" |

相关推荐
哈里谢顿4 分钟前
Python 依赖注入详解
python
冬天vs不冷32 分钟前
Java基础(九):Object核心类深度剖析
java·开发语言·python
TS的美梦33 分钟前
【1:1复刻R版】python版火山图函数一键出图
开发语言·python·r语言·scanpy·火山图
CF14年老兵44 分钟前
Python万物皆对象:从懵懂到顿悟的奇妙之旅
后端·python·trae
这里有鱼汤1 小时前
发现个用《道德经》+价值投资大咖的智慧,做A股的AI诊股神器,居然还开源了
python
陈天伟教授1 小时前
(二)Python + 地球信息科学与技术 (GeoICT)=?
开发语言·python
之歆2 小时前
大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
人工智能·笔记·python
人工干智能2 小时前
pygame的帧处理中,涉及键盘的有`pg.event.get()`与`pg.key.get_pressed()` ,二者有什么区别与联系?
python·游戏·计算机外设·pygame
R-G-B2 小时前
【P18 3-10】OpenCV Python—— 鼠标控制,鼠标回调函数(鼠标移动、按下、。。。),鼠标绘制基本图形(直线、圆、矩形)
python·opencv·计算机外设·鼠标回调函数·鼠标控制·鼠标移动·鼠标绘制图形
IT古董5 小时前
第四章:大模型(LLM)】06.langchain原理-(3)LangChain Prompt 用法
java·人工智能·python