我有一个文本区域,我必须插入一小段 PHP 代码,格式为
$value = someFunction("Parameter") . ' and concatenated string.';
但是,selenium使用美元符号来引用变量,如${variable_name}
,因此它会从文本中删除它们。我尝试插入上面的字符串,但它总是插入没有美元符号。
我也尝试将它存储在一个变量中,希望使用它们的引用样式可以让我在字符串中插入未转义的美元符号,但没有运气。您也无法转义$
,因为它不是有效的 JSON 转义字符。
注意,这不是this question.的重复。他们描述的是 PHP 中的字符串变量注入。我所描述的是在Firefox中使用Selenium Builder来自动化网页上的操作。当我在Selenium中使用setElementText
函数时,它会将文本插入到textarea中。然而,在我的文本中恰好是$
,这是Selenium用于标识变量的保留字符(使用上面的语法),因此当执行setElementText时,$
被删除文本(注意:在表单提交之前,这不是 PHP 错误地呈现文本,它永远不会在 JSON $ >文件是从中读取的。
更新
以下是一些其他细节。
这是 JSON 命令,用于在selenium中存储变量。存储的“文本”是我想要插入textarea的字符串
{
"type": "store",
"text": "$value = 'Number of People: ' . count(\"Person\");",
"variable": "php_derived_value"
}
要访问它,我们可以这样做:
{
"type": "setElementText",
"locator": {
"type": "css selector",
"value": "div > textarea"
},
"text": "${php_derived_value}"
}
请注意,此美元符号用作引用该变量的转义字符。问题在于我插入的文本将跳过美元符号。