我遇到了一个奇怪的问题,所以我写了这个示例,在其中我两次调用“ print $ {dir}”:
*** Variables ***
${dir} = "c:\\temp"
*** Test Cases ***
Test
print ${dir}
run keyword if 1 == 1 print ${dir}
*** Keywords ***
print ${input1}
log to console \r${input1}
输出:
"c:\temp"
"c: emp"
我该怎么做才能使“ print $ {dir}”每次都打印相同的内容?
答案 0 :(得分:1)
在我看来,Run Keyword If
关键字对反斜杠进行了一些附加的转义。通过再添加1个反斜杠,您也会在第一个示例中看到它。
要克服此问题,请从反斜杠()切换为正斜杠(/)。在* nix和基于Windows的系统上均可使用。
*** Variables ***
${dir} = "c:\\temp"
到
*** Variables ***
${dir} = "c:/temp"
这在Windows上仍然是有效路径。因此,在功能上,路径引用也将起作用。
答案 1 :(得分:1)
问题源于您使用嵌入式参数语法的事实。为了使机器人知道要调用哪个关键字,必须先对变量进行扩展,然后再调用该关键字。这样可以去除一层反斜杠。然后,当您的关键字传递class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _usernameController = TextEditingController();
final _passwordController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Column(
children: <Widget>[
InputFieldArea(
controller: _usernameController,
obscureText: false,
),
InputFieldArea(
controller: _passwordController,
obscureText: true,
),
RaisedButton(
onPressed: () {
// example how to read the current text field values
print('username: ${_usernameController.text}, password: ${_passwordController.text}');
},
)
],
)
);
}
}
关键字剩下的内容时,它会将log to console
视为制表符,这就是为什么您看到制表符而不是反斜杠和字母“ t”的原因。
一种解决方案是使用传统参数而不是嵌入式参数。以下示例在两次调用关键字时都给出相同的输出:
\t