Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 机器人框架-UnicodeCodeError:';ascii';编解码器可以';输入文本时,对第49位的字节0xe9进行解码:序号不在范围(128)内_Python_Python 2.7_Selenium_Robotframework - Fatal编程技术网

Python 机器人框架-UnicodeCodeError:';ascii';编解码器可以';输入文本时,对第49位的字节0xe9进行解码:序号不在范围(128)内

Python 机器人框架-UnicodeCodeError:';ascii';编解码器可以';输入文本时,对第49位的字节0xe9进行解码:序号不在范围(128)内,python,python-2.7,selenium,robotframework,Python,Python 2.7,Selenium,Robotframework,我正在查询数据库中的值,以便使用selenium在输入字段中输入。但是,对于某些值,我得到以下错误: UnicodeDecodeError:“ascii”编解码器无法解码位置中的字节0xe9 49:序号不在范围内(128) 当要在文本字段中输入的值类似于'Décor'时,我得到了一个错误。我理解字符“é”的问题。我怎样才能克服这个错误 机器人代码: *** Settings *** Library SeleniumLibrary Library DatabaseLibrary **

我正在查询数据库中的值,以便使用selenium在输入字段中输入。但是,对于某些值,我得到以下错误:

UnicodeDecodeError:“ascii”编解码器无法解码位置中的字节0xe9 49:序号不在范围内(128)

当要在文本字段中输入的值类似于'Décor'时,我得到了一个错误。我理解字符“é”的问题。我怎样才能克服这个错误

机器人代码:

*** Settings ***
Library    SeleniumLibrary
Library    DatabaseLibrary

*** Test cases ***
Test
    ${value}      Get value from database
    Input text    ${locator}    ${value}

*** Keywords ***
Get value from database
    ${queryResults}    Query    ${query}
    [Return]    ${queryResults}

注意:将文本输入到字段时会发生错误(步骤2)。将相同的值记录到控制台可以正常工作。

这是py2,我的怀疑对象将是您使用的变量的实际类型(
value
);它可能是编码形式的高ascii字符的bytestring

输入文本中使用它之前,请将其转换为unicode:

${value}=    Decode Bytes To String    ${value}
如果该操作失败-或无法产生所需的结果,请尝试使用
转换为字符串

${value}=    Convert To String    ${value}

但我怀疑后者会以编码形式保留“冒犯”字符,例如“D\xe9cor”。请务必在评论中告诉我,我很好奇:)

@DebanjanB-我确实仔细阅读了你提到的问题的答案,但我找不到解决问题的方法。当我将'D\xe9cor'转换为原始字符串时,它会按原样输入到输入文本中。但我想进入“装饰”。问题是数据库中的值被保存在元组中为“D\xe9cor”。
\xe9
é
u'\xe9'
)编码为cp1252或拉丁语-1。@snakecharmerb-是。我的问题是,如何将值获取为“é”而不是“\xe9”“?编码设置为UTF-8的解码返回错误UnicodeDecodeError:“utf8”编解码器无法解码位置36中的字节0xe9:无效的连续字节。“转换为字符串”将其转换为原始字符串。与问题注释中提到的行为相同。
值的类型是什么?运行此命令-
${the type}=Evaluate type($value)
-注意变量周围没有花括号,然后
记录到控制台${the type}
。。我现在更好奇了!目前,我限制获取具有特定字符(é)的数据。我知道这是一个解决办法。这也大大减少了我的测试数据集,因为大多数数据都包含字符。但这就是我现在能想到的。在python2.7中,bytearray/bytestring的类型是'str';unicode字符串的类型为“unicode”;所以我的怀疑是正确的,让我们试着让它为你工作:)