在 Cucumber Selenium 中使用 Ruby 时 JavaScript 出错
Error in JavaScript while using in Cucumber Selenium with Ruby
我正在尝试 select 使用 Selenium ruby 中的以下代码和黄瓜 framework.I 中的下拉列表 Javascript 到 select 的值.
When(/^user selects year as (\d+)$/) do |arg1|
$driver.execute_script('document.getElementsByName("param[start_year]")[0].value=arg1;')
end
但是我收到类似这样的错误this.Please帮我解决
arg1 is not defined (Selenium::WebDriver::Error::JavascriptError)
您正在执行的 JavaScript 位具有硬编码的变量 arg1
。脚本会将其视为 JavaScript 变量 - 因为没有定义此类变量在 JavaScript space 中,您收到错误。
根据其余代码,我假设您实际上想将 Ruby space 中定义的 arg1
变量的值传递给 JavaScript代码。我建议你试试这个:
When(/^user selects year as (\d+)$/) do |arg1|
$driver.execute_script(%Q<document.getElementsByName("param[start_year]")[0].value="#{arg1}";>)
end
请注意,我使用了 %Q
text delimiter 以便 #{}
文本插入可以与包含双引号的文本结合使用 ("
)
我正在尝试 select 使用 Selenium ruby 中的以下代码和黄瓜 framework.I 中的下拉列表 Javascript 到 select 的值.
When(/^user selects year as (\d+)$/) do |arg1|
$driver.execute_script('document.getElementsByName("param[start_year]")[0].value=arg1;')
end
但是我收到类似这样的错误this.Please帮我解决
arg1 is not defined (Selenium::WebDriver::Error::JavascriptError)
您正在执行的 JavaScript 位具有硬编码的变量 arg1
。脚本会将其视为 JavaScript 变量 - 因为没有定义此类变量在 JavaScript space 中,您收到错误。
根据其余代码,我假设您实际上想将 Ruby space 中定义的 arg1
变量的值传递给 JavaScript代码。我建议你试试这个:
When(/^user selects year as (\d+)$/) do |arg1|
$driver.execute_script(%Q<document.getElementsByName("param[start_year]")[0].value="#{arg1}";>)
end
请注意,我使用了 %Q
text delimiter 以便 #{}
文本插入可以与包含双引号的文本结合使用 ("
)