实验六selenium工具测试最高难度一命速通

准备工作
先下载一个火狐浏览器
Firefox

打开扩展

注意如果出现了报错很可能是网络出现了问题,可以尝试使用校园网或者流量,
不行的话就打开命令窗win+R 输入cmd
输入 ipconfig /flushdns 系统自动清理DNS,再重启火狐试试能不能行,不行可能是每个人电脑体质不一样,可以对症下药

开始任务一
点击运行这扩展

选择创建新项目

项目名称无所谓随便取一个就行

先输入url再点运行测试,附上url:
https://github.com

先打开全屏

搜索
Selenium
此时会有两种情况,
没有挂梯子时,会有概率进不去,让你重试
挂了梯子有概率限制你,如图:

两种情况都可以等等试试,不行就去自己找解决方法

这样就可以了,返回Se的插件界面点击停止录制

停止后会让你输入测试名字,随便输

点击ok后开始运行测试

出现如下界面很正常

在刚才的gihub界面的搜索栏打开检查查看name属性


到这里任务一就完成啦,下面开始任务二:
先按照python和一个库,我这里使用的pycharm,用vscode应该差不多

按 Win + R 输入 cmd
安装Selenium库:
- 在CMD中输入以下命令:
pip install selenium webdriver-manager
注意别挂着梯子下,会下不了
创建一个py文件
github_test.py

附上代码,注意图中的文件位置要改成自己的
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 配置 Firefox 选项(防反爬)
options = Options()
options.set_preference("general.useragent.override",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
# 启动浏览器
driver = webdriver.Firefox(
service=Service(r'F:\PythonProject\rjcs6\geckodriver.exe'),
options=options
)
driver.get("https://github.com")
try:
wait = WebDriverWait(driver, 20)
# 点击搜索按钮
search_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Search or jump to…']")))
search_button.click()
# 输入关键词并回车
search_input = wait.until(EC.presence_of_element_located((By.NAME, "query-builder-test")))
search_input.send_keys("Selenium" + Keys.RETURN)
# 等待页面跳转
WebDriverWait(driver, 20).until(EC.url_contains("/search"))
# 等待结果可见(更新选择器)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "[data-testid='results-list']"))) # 替换为实际选择器
print("✅ 检查点验证成功!")
finally:
driver.quit()
别急着运行代码,还少个文件,进入网址Releases · mozilla/geckodriver下载火狐运行的驱动(因为这个比较稳定,所以使用这个来教程,是可以用代码跳过这一步的),进不来网址的挂梯子或者尝试换DNS多等等
往下滑找到这个win64位的

将里面的exe文件放在代码中文件的位置就行

到这里就可以了,运行后能正常打开火狐浏览器和github并且搜索Selenium,如果打不开浏览器可能是那个geck的版本和你的火狐版本不匹配,尝试更新火狐或调整geck版本,如果打不开github还是老问题,建议挂梯子

这个是成功界面,控制台正常输出,火狐界面会自动关闭

出现这个界面就等等,这是挂梯子被限制了,多等等刷新就好了

到这里任务二就结束了,下面开始任务三
先下载库pytest
pip install pytest
挂着梯子不能下注意关一下
创建一个CSV文件,里面放
keyword,expected_result
Selenium,有结果
InvalidKeyword123,无结果
再创建一个
github_param_test.py
附上代码
import csv
import random
import pytest
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options # 添加 Options 模块
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def read_csv():
with open('search_data.csv', 'r', encoding='utf-8') as f:
return list(csv.DictReader(f))
@pytest.mark.parametrize("data", read_csv())
def test_search(data):
# 设置 Firefox 选项(防反爬)
options = Options()
options.set_preference("general.useragent.override",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
# 替换为本地 geckodriver 的路径
service = Service(r'F:\PythonProject\rjcs6\geckodriver.exe') # 使用本地路径
driver = webdriver.Firefox(service=service, options=options) # 传入 options 参数
driver.get("https://github.com")
wait = WebDriverWait(driver, 10)
# 点击搜索按钮,展开输入框
search_button = wait.until(
EC.element_to_be_clickable((By.XPATH, "//button[@aria-label='Search or jump to…']"))
)
search_button.click()
# 等待搜索框加载
search_box = wait.until(
EC.presence_of_element_located((By.NAME, "query-builder-test"))
)
# 输入关键词并提交
search_box.send_keys(data["keyword"])
search_box.submit()
# 根据预期结果验证
if data["expected_result"] == "有结果":
assert "Your search did not match any" not in driver.page_source
else:
try:
# 使用XPath检查是否存在 "没有匹配的仓库" 提示
wait.until(
EC.presence_of_element_located(
(By.XPATH, "//h3[contains(text(), 'Your search did not match any')]")
)
)
# 如果找到了该提示元素,说明没有结果
no_result = True
except:
# 如果没有找到该提示元素,说明有结果
no_result = False
# 断言结果是否符合预期
assert no_result, f"预期无结果,但搜索 '{data['keyword']}' 显示有结果。"
driver.quit()
# 延时,防止触发访问限制
time.sleep(random.randint(30, 60))
注意自己调整文件的位置

在你的控制台输入bash命令
pytest github_param_test.py -v
注意要在你的py文件夹下,我这里就是rjcs6

然后慢慢等,最后这样就成功了

好啦,希望能帮到您
浙公网安备 33010602011771号