我有一个非常奇怪的问题,我甚至不知道如何开始调试。
我正在运行一个python包,四天前,没有任何问题。两天前,我开始遇到奇怪的错误,例如a object does not have attribute tryClick
(“a”是我的班级)。早在此问题开始之前的一周内,就没有触及tryClick的代码。
将变量从一个文件导入另一个文件也很麻烦。例如:
my_var = None
class myClass(Base_Test):
def myfunction(self):
global my_var
my_var = True
return my_var
导入my_var
曾用于返回True
但现在返回None
奇怪的是,如果我把我的包从我们的git repo拉到干净的机器上,设置PYTHONPATH,并运行包,一切正常!我清除了机器中的代码,重新提取代码并运行包但仍然遇到这些错误。
我的结论是,这是环保的,但我不知道它可能是什么!什么样的环境因素可能导致这个问题?
不是说这个错误给我的解释增加了很多,但它已被请求,所以你去吧
Traceback (most recent call last):
File "M:\depot\external-access\gitfusion\MyShipRush\Selenium\WebShipping\selenium_error_report.py", line 35, in decorator
value = f(*args, **kwargs)
File "C:\Selenium\WebShipping\Tests\MainForm\SampleCode_toGetStaleElementReferenceException_test.py", line 22, in test_Staleelementexception
self.tryClick('#%s .service-row' % service_id)
AttributeError: 'a' object has no attribute 'tryClick'
更完整的课程示例:
import unittest
import Shortcuts
from Utils import Base_Test
from LogUtils import logger
class a(Base_Test):
def test_togetstaleelementexception(self):
Shortcuts.open_settings(self)
logger.debug("Selecting Service")
Shortcuts.click_dd(self)
service_id_elements = self.find_elements("#ServiceDropDown .row-holder")
service_id = service_id_elements[1].get_attribute("id")
self.tryClick('#%s .service-row' % service_id)
我可以向您保证tryClick()
中存在BaseTest
。如果我在干净的机器上运行此代码,则没有错误。如果我在我的机器上运行它,就会出现错误。代码完全相同,因为我已经删除并取消了两个地方的所有代码。
答案 0 :(得分:0)
@JFSebastian - 你的评论钉了它!
虽然我的包中只有一个BaseTest
模块的引用,但是有两个目录在我的机器上保存它。两个目录都在sys.path
- 当我移动我的代码时,我知道将新目录添加到PATH,但没有考虑到离开旧目录的影响。
我删除了对旧版本的引用,一切都再次有效。
谢谢!