提问人:Selim 提问时间:10/23/2023 最后编辑:PayrfixSelim 更新时间:10/24/2023 访问量:119
Python Selenium AttributeError:对象没有属性
Python Selenium AttributeError: object has no attribute
问:
问题是,虽然我可以看到我正在调用的方法,但错误说我没有调用的方法。这是错误:
Traceback (most recent call last):
File "C:\Users\htuna\selenium-playground\src\query\ncts_query.py", line 21, in <module>
query.query_press_key()
File "C:\Users\htuna\selenium-playground\src\query\ncts_query.py", line 13, in query_press_key
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",
^^^^^^^^^^^^^
AttributeError: 'Query' object has no attribute '_Query__chrome'
我可以在 Ncts() 类中使用 Chrome() 类中的方法,但是我不能在 Query() 类下使用相同的方法。这是我的代码:
from src.query.ncts_query_data import QueryData
from src.login.ncts_login import Ncts
from src.browser.chrome import Chrome
class Query:
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 = Query()
ncts = Ncts()
ncts.login()
ncts.open_guarentee_query()
query.query_press_key()
答:
0赞
Payrfix
10/23/2023
#1
您的类定义存在 2 个问题。
- 它不应该是.(双下划线)
__init__
_init_
- 您无法直接访问,因为您是用双下划线 () 编写的。这意味着不应在课外访问它。它类似于私有变量,但与其他语言不同。
__chrome
__
若要修复代码,下面是一个示例。
from src.query.ncts_query_data import QueryData
from src.login.ncts_login import Ncts
from src.browser.chrome import Chrome
class Query:
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")
评论
0赞
Selim
10/23/2023
我改变了,但它不能正常工作。它打开了 3 个 Chrome 浏览器。我也以这种方式更改了我的代码:现在它打开了 1 个 Chrome 浏览器,但错误显示:__init__
chrome
query = Query(queryData=QueryData, ncts=Ncts, chrome=Chrome) ncts = Ncts() ncts.login() ncts.open_guarentee_query() query.query_press_key()
TypeError: Chrome.press_key() missing 1 required positional argument: 'self'
0赞
Payrfix
10/24/2023
您的第一个问题是,更改解决了该问题,因为您不再遇到它。您遇到的问题是另一个问题。我建议你阅读更多关于python类如何工作的信息。AttributeError: 'Query' object has no attribute '_Query__chrome'
评论