王海鱼 发表于 6 天前

Python + Selenium 入门教程:Web 主动化测试快速入门

Python + Selenium 入门教程:Web 主动化测试快速入门

Selenium 是一个非常盛行的 Web 主动化测试工具,广泛应用于主动化浏览器操作、爬虫开发以及 Web 应用程序的功能测试等范畴。与 Python 联合使用时,Selenium 提供了简朴且强大的功能,使得主动化测试变得更加高效。
本教程将带你相识如何使用 Python 和 Selenium 举行 Web 主动化测试的根本操作。
1. 安装和配置

1.1 安装 Python 和 Selenium

首先,确保你已经安装了 Python。假如尚未安装,可以从 Python 官方网站 下载并安装。
然后,通过 pip 安装 Selenium 库:
pip install selenium
1.2 安装 WebDriver

Selenium 需要一个 WebDriver 来与浏览器举行交互。不同的浏览器有不同的 WebDriver。常见的浏览器和其对应的 WebDriver 包罗:


[*]Chrome: ChromeDriver
[*]Firefox: GeckoDriver
[*]Edge: EdgeDriver
在这里,以 Chrome 为例:

[*]访问 ChromeDriver 下载页面,下载与当前 Chrome 浏览器版本匹配的 ChromeDriver。
[*]解压下载的文件,并将 chromedriver.exe 文件地点的路径添加到系统环境变量中,或在代码中直接指定路径。
2. 使用 Selenium 举行浏览器主动化

2.1 启动浏览器

我们首先用 Selenium 启动一个浏览器并打开一个网页。
from selenium import webdriver

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 打开一个网页
driver.get("https://www.baidu.com")

# 等待 5 秒钟,查看浏览器
import time
time.sleep(5)

# 关闭浏览器
driver.quit()

在上述代码中,我们首先导入了 webdriver,然后用 webdriver.Chrome() 启动了一个 Chrome 浏览器,并用 get() 方法打开了 Google 的首页。
2.2 查找页面元素

Selenium 提供了多种方法来定位网页元素。常见的定位方法有:


[*]by ID: find_element_by_id()
[*]by Name: find_element_by_name()
[*]by Class Name: find_element_by_class_name()
[*]by XPath: find_element_by_xpath()
[*]by CSS Selector: find_element_by_css_selector()
示例:通过 ID 查找元素

from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 打开 Google 首页
driver.get("https://www.google.com")

# 查找搜索框,输入文本
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium")

# 提交搜索
search_box.submit()

# 等待 5 秒钟查看结果
import time
time.sleep(5)

# 关闭浏览器
driver.quit()

在这段代码中,我们通过 find_element(By.NAME, "q") 定位到 Google 的搜索框,并使用 send_keys() 方法输入搜索内容,末了通过 submit() 方法提交搜索。
2.3 模拟点击操作

我们可以模拟点击网页上的元素,例如按钮、链接等。
from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.example.com")

# 查找并点击链接
link = driver.find_element(By.LINK_TEXT, "More information...")
link.click()

# 等待 5 秒钟
import time
time.sleep(5)

# 关闭浏览器
driver.quit()

在上述代码中,find_element(By.LINK_TEXT, "More information...") 查找一个链接,并用 click() 模拟点击。
2.4 实行 JavaScript 脚本

Selenium 还答应实行 JavaScript 脚本,例如获取页面的标题,大概直接在页面上实行一些操作。
from selenium import webdriver

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.example.com")

# 执行 JavaScript 脚本,获取页面标题
title = driver.execute_script("return document.title;")
print(f"页面标题是: {title}")

# 关闭浏览器
driver.quit()

通过 execute_script() 方法,你可以实行 JavaScript 脚本并返回结果。
2.5 等候页面加载

在主动化脚本中,页面加载的时间可能不一致。因此,使用 Selenium 的 显式等候 或 隐式等候 可以确保元素已经加载完毕。
隐式等候

隐式等候会在查找元素时等候肯定的时间,直到元素可用为止。
from selenium import webdriver

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 设置隐式等待时间为 10 秒
driver.implicitly_wait(10)

# 打开 Google 首页
driver.get("https://www.google.com")

# 查找搜索框
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python Selenium")

# 提交搜索
search_box.submit()

# 关闭浏览器
driver.quit()

显式等候

显式等候答应你设置特定的条件,直到条件满足才继承实行。
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

# 启动 Chrome 浏览器
driver = webdriver.Chrome()

# 打开 Google 首页
driver.get("https://www.google.com")

# 显式等待直到搜索框可用
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, "q"))
)

# 输入搜索内容并提交
search_box.send_keys("Python Selenium")
search_box.submit()

# 关闭浏览器
driver.quit()


3. Selenium 的常用操作总结


[*]启动浏览器: webdriver.Chrome() / webdriver.Firefox() 等。
[*]打开网页: get() 方法。
[*]查找元素: find_element() 或 find_elements() 方法。
[*]输入文本: send_keys() 方法。
[*]模拟点击: click() 方法。
[*]实行 JavaScript: execute_script() 方法。
[*]等候元素加载: 隐式等候和显式等候。
[*]关闭浏览器: quit() 方法。
4. 总结

通过本教程,你已经学习了如何使用 Python 和 Selenium 举行 Web 主动化操作。我们从基础的浏览器启动、元素查找、表单输入,到模拟点击和等候机制,都做了详细的讲解。
在实际应用中,Selenium 可以或许资助我们实现 Web 应用程序的主动化测试和数据抓取等功能。希望你能通过本教程快速入门,动手尝试不同的主动化场景。
假如你有任何题目,欢迎在评论区留言,我会尽快复兴你!
这篇教程可以资助初学者明白和掌握 Python + Selenium 的基础内容。假如有更复杂的需求,你也可以根据实际情况扩展内容。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python + Selenium 入门教程:Web 主动化测试快速入门