带你认识Selenium函数

devtools/2024/11/9 16:45:24/

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"

http://www.ppmy.cn/devtools/17532.html

相关文章

MATLAB中左边的大括号最后一行为什么会留很大的空白——解决

看了一些帖子说改字体,但是并没有什么用,在此给出亲测有效的方法:改变矩阵的行间距 先说一下问题 上图中留有大块空白 **解决办法:**光标放在矩阵上 格式——矩阵——更改矩阵,在矩阵设置中选中“行高相等”&#xff…

python绘制三维图

在Python中,我们可以使用matplotlib库中的mplot3d工具包来绘制三维图。下面是一个简单的例子,绘制了一个三维的散点图和一个三维曲面图: 首先,确保已经安装了matplotlib库。如果没有,可以通过pip进行安装:…

Git 分支管理

Git 分支管理 | CoderMast编程桅杆Git 分支管理 在 Git 中,分支是指向提交对象(commits)的可变指针。它们是一系列提交的引用,其中的每个提交都包含了一组文件的状态以及指向其父提交的指针。主要的分支通常是 master 或 main&…

使用Visual Studio调试VisionPro脚本

使用Visual Studio调试VisionPro脚本 方式一: 修改项目文件 csproj 开启VisionPro脚本调试功能 Visual Studio配置启动项目 创建控制台应用程序 修改后缀名为csproj配置文件 添加 <StartAction>Program</StartAction> <StartProgram>C:\ProgramFiles\Co…

endnote21从安装到使用!文献引用!Mac版

视频学习和资源获取 新建库 选择上方导航栏处的File下的New 软件 软件界面可以分成四个部分 2是个人图书馆 3是对某一分类中文献的展示 最右侧是对具体一篇文献的摘要、编辑以及PDF 有回形针标志意味着这篇有全文&#xff0c;也就是有pdf 如果没有回形针代表它只有引文信…

李彦宏:程序员将不复存在! 周鸿祎回怼!网友:先把百度程序员都开除了!

近日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在央视《对话》•开年说的访谈中指出&#xff1a;“基本上说以后其实不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 “未来的编程语言只会剩下两种&#xff0c;一种…

如何在vue3+vite中优雅的使用iconify图标

前言 从Vue2迁移到Vue3&#xff0c;在使用上有着很大的差别。本文的话主要是针对图标的使用差别上进行分析&#xff0c;同时给出基于iconify图标库中unplugin-icons的用法。这里特殊说明一下&#xff1a;其实element-plus中用到的图标也是基于iconify图标库的&#xff0c;在我们…

数据结构-并查集

- # 并查集定义:并查集是一种用于维护一系列不相交集合的数据结构&#xff0c;每个集合可以看作一棵树&#xff0c;树中的节点代表元素&#xff0c;节点间的边表示元素之间的父子关系。并查集的核心操作 查找:确定一个元素所在的集合标识&#xff08;通常是树的根节点&#xff…