2017-05-16 15 views
1

我需要將包含一些特殊的「不可打印」ASCII字符的字符串插入到文本框中,但經過多次嘗試後,它總是插入普通字符串而沒有任何特殊字符。 讓我們來談談「垂直選項卡」,它會在測試的應用程序中造成一些麻煩。所以我需要在文本框中插入對應於pythonic chr(11)的值(二進制ASCII碼是00001011,unicode應該是\u000b)。 我準備了一個函數,它返回我需要從Python獲取的字符串,並從Robot中調用它,並試圖將其插入到文本框中。但它總是插入沒有特殊字符的字符串。 這是Python函數:機器人框架或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 

在控制檯正確的字符串包含特殊字符打印(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

嘗試通過在'輸入文本'中使用變量本身,而不是它的值 - 例如'input text $ {element} $ string';這應該保留特殊符號一直沿着命令的硒執行。 – Todor

+0

我不知道我明白...傳遞變量本身是我嘗試'輸入文本$ {元素} $ {字符串}'的第一個選項,它不起作用 – neliCZka

+0

這有點不同 - 以'$ {variable } RF將採用變量的值,並將其用作字符串。另一方面,'$ variable'(不包括大括號)的形式是「告訴」RF使用變量本身。一些僞python代碼爲例 - 'variable = 4;打印( '4');打印(變量)' - 第一次調用打印字符串4 - 這是RF將用「$ {variable}」替代的,而第二次 - 將打印變量'變量'本身 - RF調用'$ {a} '。 – Todor

回答

0

聽起來像input text會寫字母字符串。可能\u000b在您正在測試的GUI中鍵入時不會執行任何操作?

我沒有一個系統來檢查它,但也許Press Key會幫助。像這樣:

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

謝謝,但'按下鍵'不能工作:(我也嘗試'發送鍵'從蟒蛇,它沒有工作.. – neliCZka