当我针对“select-one”类型的元素调用to_sym时,我正在遇到错误。
begin
["//select", "//input"].each do |t|
puts 'finding input for : ' + t
elements = all(:xpath, t)
elements.each do |e|
puts "found element #{e[:id]} of type #{e[:type]}" if @debug
puts "to symbol result: " + e[:id].to_sym #This line explodes
#...
rescue
puts "failed to enter fields on #{@name}"
raise
end
我收到错误“无法在pageName上输入字段”。当我在类型select-one的元素上调用to_sym
时会发生此错误。如何确定此错误的原因并解决它?
更新
Per @axeltetzlaff我安装了Pry。我注意到值[salutation]返回nil,我希望下面给出一个值:
[1] pry(#<Step>)> values[e[:salutation]]
=> nil
[2] pry(#<Step>)> values
=> {:z=>"z",
:a=>"a",
:b=>"b",
:c=>"c",
:d=>"d",
:e=>"e",
:f=>"f",
:g=>"",
:h=>"",
:salutation=>"Mr.",#See...I have a value
UPDATE2
我拿出了用于调试的puts
,问题就消失了:
puts "to symbol result: " + e[:id].to_sym #This line explodes
代码不再在下一行中断。通过简单的推论,问题是我无法连接字符串和符号。我猜这里有一些红宝石规则,说我不能这样做,但我没有一个可用。
答案 0 :(得分:0)
NetworkingRequestDidUpdatProgress:(float progress)
将字符串转换为符号。例如,to_sym
变为"a".to_sym
确保您的:a
返回一个您正在调用e[:id]
方法的字符串对象。尝试检查:
to_sym
你不能在Ruby中连接字符串和符号。这会抛出puts e[:id].inspect
puts e[:id].class
例外。
而不是:
no implicit conversion of Symbol into String (TypeError)
你可以使用字符串插值做同样的事情:
puts "to symbol result: " + e[:id].to_sym