机器人框架或Python - 如何将不可打印的字符插入文本框

时间:2017-05-16 11:11:08

标签: python selenium unicode ascii robotframework

我需要将包含一些特殊“不可打印”ASCII字符的字符串插入到文本框中,但经过多次尝试后,它总是只插入普通字符串而不带任何特殊字符。 我们来谈谈“垂直标签”,这会在经过测试的应用程序中产生一些麻烦。所以我需要将对应于pythonic chr(11)的值插入到文本框中(二进制ASCII代码为00001011,unicode应为\u000b)。 我准备了一个函数返回我需要的Python字符串,从Robot调用它并尝试将其插入到文本框中。但它总是只插入没有特殊字符的字符串。 这是Python函数:

   def do_string_not_printable_chars():
     string = 'first'+chr(11)+'last'
     return string

然后我从机器人那里叫它:

${string}=   do string not printable chars
log to console  ${string}
input text  ${element}  ${string}
Save Data

在控制台正确的字符串中打印了CONTAINING特殊字符(first♂last),但在实际文本框中只有"firstlast"没有特殊字符。 如果我从控制台手动复制字符串并粘贴到文本框中,它将插入特殊字符并且已测试的应用程序失败:) 我试图将它直接粘贴为机器人中的unicode值:

log to console  \u000b
input text  ${element}  \u000b
Save Data

结果是一样的 - 在控制台中我可以看到打印的特殊字符,但是在文本框中没有插入这样的字符。 我也尝试了Decode Bytes to StringEncode String to Bytes的各种组合,但结果又一样......例如:

${value}=  encode string to bytes  \u000b  ASCII
log to console  ${value}
input text  ${element}  ${value}
Save Data

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

听起来input text会逐个字母地写出这个字符串。在您正在测试的GUI中键入时,\u000b可能无法执行任何操作?

我现在没有系统检查它,但也许Press Key会有所帮助。像这样:

log to console  \\11
press key  ${element}  \\11
Save Data