使用Selenium+Python统计元素实例:类实例化与方法调用求助
Selenium Add/Remove Elements 实现指导
正确的页面类实现
重构页面类,将浏览器驱动传入初始化方法,内置计数变量,封装添加、删除元素的逻辑:
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 class AddRemovePage: def __init__(self, driver): self.driver = driver self.page_url = "https://the-internet.herokuapp.com/add_remove_elements/" self.add_button = (By.CSS_SELECTOR, "button[onclick='addElement()']") self.delete_button = (By.CSS_SELECTOR, "button[onclick='deleteElement()']") self.element_count = 0 # 维护元素计数 def go_to_page(self): self.driver.get(self.page_url) WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(self.add_button)) def add_element(self): add_btn = self.driver.find_element(*self.add_button) add_btn.click() self.element_count += 1 WebDriverWait(self.driver, 5).until(EC.presence_of_element_located(self.delete_button)) def delete_element(self): try: delete_btn = self.driver.find_element(*self.delete_button) delete_btn.click() self.element_count -= 1 except: raise ValueError("没有可删除的元素")
实例化与方法调用步骤
按以下流程调用类方法,同时添加断言验证:
# 初始化浏览器驱动(以Chrome为例) driver = webdriver.Chrome() driver.implicitly_wait(10) # 实例化页面类 add_remove_page = AddRemovePage(driver) # 导航到目标页面 add_remove_page.go_to_page() # 执行添加操作 add_remove_page.add_element() add_remove_page.add_element() print(f"添加2个元素后,计数: {add_remove_page.element_count}") assert add_remove_page.element_count == 2, "添加元素后计数不符" # 执行删除操作 add_remove_page.delete_element() print(f"删除1个元素后,计数: {add_remove_page.element_count}") assert add_remove_page.element_count == 1, "删除元素后计数不符" # 关闭浏览器 driver.quit()
关键注意点
- 类初始化必须传入已创建的WebDriver实例,保证会话统一
- 用实例变量
element_count跟踪元素数量,每次操作后同步更新 - 添加显式等待避免页面加载延迟导致的元素定位失败
- 删除操作增加异常处理,防止无元素可删时报错
内容的提问来源于stack exchange,提问作者Jason Harder
相关产品推荐
相关产品推荐

