5月10日

import csv
import pytest
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
from webdriver_manager.firefox import GeckoDriverManager

def read_csv():
    with open('search_data.csv', 'r') as f:
        return list(csv.DictReader(f))

@pytest.fixture
def driver():
    driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
    yield driver
    driver.quit()

@pytest.mark.parametrize("data", read_csv())
def test_search(data, driver):
    driver.get("https://github.com")
    
    # 输入关键词并搜索
    search_box = driver.find_element(By.NAME, "q")
    search_box.send_keys(data["keyword"])
    search_box.submit()
    
    # 根据预期结果验证
    if data["expected_result"] == "有结果":
        # 等待结果加载
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".repo-list-item"))
        )
        results = driver.find_elements(By.CSS_SELECTOR, ".repo-list-item")
        assert len(results) > 0, "预期找到结果,但未找到"
    else:
        # 等待无结果提示
        WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.CSS_SELECTOR, ".blankslate"))
        )
        error_message = driver.find_element(By.CSS_SELECTOR, ".blankslate").text
        assert "No results matched" in error_message, "预期无结果,但找到了结果"

 

posted @ 2025-05-13 14:01  KuanDong24  阅读(9)  评论(0)    收藏  举报