You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:48:04