[英]Lua: attempt to index field '?' (a nil value)
我只是从lua开始,我有一些故意犯错误的人提供的代码。 现在,我遇到了一个障碍,不断出现以下代码错误:
function SIM_Utils:ClickButton(app, buttonName)
page = app:getTopPage()
widgets = page:getWidgets(buttonName)
print (type(widgets))
print (widgets[1])
widgets[1]:click(true, 5000)--this yields "attempt to index field '?' (a nil value)"
widgets[1]:click(false,0)--this yields "attempt to index field '?' (a nil value)"
app:captureScreen()
end
这将导致:
table
WidgetCommon (09590790)
LE
运行Alex在这里发布的结果之后:
widgets=
table: 0A45CF28
1
WidgetCommon (09590790)
表是否为0A ...我正在寻找的答案?
LE 2:重新发布了整个功能,因为看来这是问题所在
什么是page:getWidgets
返回? 您可以使用print(type(widgets))
。 如果它是一个表,则该表中未定义数组位置1(您可以使用pairs
函数遍历表内容)。 如果不是表,那么您试图在不是表的东西上查找索引,这将无法正常工作。
另外,由于您不page:getWidgets
Lua,因此请意识到page:getWidgets
不是内置组件。 因此,您将需要加载此功能或使用提供此功能的相应派生应用程序。
尝试运行以下代码:
widgets = page:getWidgets(buttonName)
print("widgets=", widgets) -- Should print out something like "Widgets= 0x12345678". If it doesn't then widgets is nil. In other words nothing is there.
for k, v in pairs(widgets) do
print(k, v)
end
这样可以确保您有一个widgets
表,如果有的话,它将告诉您其中的内容。 如果索引1上没有任何内容,那就是您的问题: page:getWidgets(buttonName)
没有返回您期望的小部件列表。
似乎不太可能,但是您正在使用的库有可能(实际上是您发布的信息中唯一的可能性)抛出错误,而不是代码。 请注意,当在Lua中引发错误时,抛出代码,并告诉Lua将错误显示为从您的调用代码而非库代码中引发的错误。 只能将其用于逻辑错误,例如“ Widget :: show的错误参数”,而不是所得到的东西,但这可能发生。 同样,C函数中的错误也会显示出来,就像它来自您的代码一样。 例如:
io.open("myFile").read() --> should be ":read", not ".read"
stdin:1: attempt to index a nil value
stack traceback:
stdin:1: in main chunk
[C]: ?
您是否有堆栈回溯显示以及错误?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.