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

Python Selenium报错:Query对象无_Query__chrome属性求助

问题原因及修复方案

核心错误点

  1. 构造函数名称不符合规范:Python类的构造函数必须是__init__(前后各两个下划线),你写的_init_少了两个下划线,导致这个方法不会被Python自动调用,实例化Query对象时根本没初始化__chrome属性,调用方法时自然找不到该属性。
  2. 实例化时未传入必要参数:Query类的构造函数要求传入queryData、ncts、chrome三个参数,但你直接执行query = Query(),既没传参,也没触发正确的构造函数,双重错误导致属性缺失。

修复后的代码

from src.query.ncts_query_data import QueryData
from src.login.ncts_login import Ncts
from src.browser.chrome import Chrome

class Query:
    # 修正构造函数名称为__init__
    def __init__(self, queryData: QueryData, ncts: Ncts, chrome: Chrome):
        self.__queryData = queryData
        self.__ncts = ncts
        self.__chrome = chrome

    def query_press_key(self):
        self.__chrome.press_key("/html/body/form/div[4]/div[2]/div[1]/div/div[3]/div/div/div[2]/table[1]/tbody/tr/td/table/tbody/tr[4]/td[2]/input",
                                "DENEME")

# 先创建构造Query所需的各个实例
chrome = Chrome()
ncts = Ncts(chrome)  # 这里根据Ncts类的实际构造要求调整,确保它持有Chrome实例
query_data = QueryData()

# 正确传入所有参数实例化Query
query = Query(query_data, ncts, chrome)

ncts.login()
ncts.open_guarentee_query()
query.query_press_key()

额外说明

  • 如果Ncts类本身已经内部创建了Chrome实例,你可以从ncts中获取该实例传入Query,比如query = Query(query_data, ncts, ncts.chrome)(具体属性名根据Ncts类的实现调整)。
  • 双下划线开头的属性(如__chrome)是Python的名称修饰机制,只能在类内部直接访问,如果你需要在外部访问这类属性,建议改用单下划线(如_chrome)或者提供getter方法。

内容的提问来源于stack exchange,提问作者Selim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:55:07