Watir execute_script

时间:2016-05-05 00:58:37

标签: javascript ruby-on-rails webdriver watir-webdriver

我通过用户界面中的textarea获取JavaScript代码,然后在我的应用程序中执行代码,如下所示:

用户输入:

text = 'I am fine!!! ';
return text.replace(/(.+)\s+$/g, '$1’);

但是,在rails中,转义字符会添加到textarea中的用户输入:

"text = 'hello how are you? ';\\d\r\nreturn text.replace(/(.+)\\s+$/g, '$1’);"

因此execute_script语句会出现“非法字符”错误。

browser.execute_script("text = 'hello how are you? ';\\d\r\nreturn text.replace(/(.+)\\s+$/g, '$1’);")

如何在不使用正则表达式的情况下摆脱转义字符,以便execute_script运行正常?

2 个答案:

答案 0 :(得分:0)

检查出来:

browser.execute_script("text = 'hello how are you? '; return text.replace(/(.+)\\s+$/g, '$1');")

<强> BUT!为什么在地球上你需要它?

这是一个非常奇怪的案例,我正在为Dave的评论添加+1。做一些javascript魔术不是典型的用户动作。试着再想一想你在做什么。

答案 1 :(得分:0)

您是否考虑过尝试http://spdevelopment:8282/studentheader/SitePages/Home.aspx? 以下是我可能采用的方法:

test = "\\d\r\nreturn text.replace(/(.+)\\s+$/g, '$1’);"
=> "\\d\r\nreturn text.replace(/(.+)\\s+$/g, '$1’)"
test.gsub!(/[\d\n\r\\d]/, '')
=> "return text.replace(/(.+)s+$/"

如果您不想覆盖它,您还可以使用String#gsub!来返回修改过的副本

test.gsub(/[\d\n\r\\d]/, '')
=> "return text.replace(/(.+)s+$/"

您可以明显自定义正则表达式以自定义您的需求。还要注意智能引号,例如1美元的右引号,因为'

不同