【问题标题】:Cannot assign an inst variable in Switch "--user-data-dir" in Selenium Wedriver Chrome无法在 Selenium Webdriver Chrome 中的 Switch“--user-data-dir”中分配 int 变量
【发布时间】:2015-08-23 12:29:46
【问题描述】:
我有以下代码,我想创建一个名为“mydir”的用户目录,chrome 应该在其中输出控制台日志,但发生的是它创建了一个目录 #{dir}。我也尝试使用 CONST 变量仍然是相同的结果。有人能帮帮我吗?
require "selenium-webdriver"
class MyClass
dir='mydir'
@driver = Selenium::WebDriver.for :chrome, :switches => %w[--ignore-certificate-errors --user-data-dir=#{dir} --enable-logging]
end
【问题讨论】:
标签:
ruby
google-chrome
selenium
selenium-webdriver
selenium-chromedriver
【解决方案1】:
%w 文字类似于对字符串使用单引号。没有插值。因此,--user-data-dir 正是输入的内容 - “#{dir}”。要启用插值,您需要使用大写字母 W - 即 %W:
您可以通过以下方式看到差异:
dir = 'mydir'
# Without interpolation
p %w[--user-data-dir=#{dir}]
#=> ["--user-data-dir=\#{dir}"]
# With interpolation
p %W[--user-data-dir=#{dir}]
#=> ["--user-data-dir=mydir"]
最后,你的脚本会变成:
require "selenium-webdriver"
class MyClass
dir='mydir'
@driver = Selenium::WebDriver.for :chrome, :switches => %W[--ignore-certificate-errors --user-data-dir=#{dir} --enable-logging]