实验六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

 

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

 好啦,希望能帮到您

 

posted on 2025-05-08 16:04  HA_wind  阅读(120)  评论(0)    收藏  举报

导航