拒绝将字符串评估为JavaScript,因为'unsafe-eval'

时间:2017-08-07 16:12:25

标签: ruby selenium phantomjs watir

大家好我正在使用phantomjs进行自动化测试。这是我的代码:

capabilities = Selenium::WebDriver::Remote::Capabilities.phantomjs("phantomjs.page.settings.userAgent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
  proxies = ['--ignore-ssl-errors=true', '--web-security=false', '--ssl-protocol=any']
  driver = Selenium::WebDriver.for :phantomjs, :desired_capabilities => capabilities , :args => proxies

  browser = Watir::Browser.new driver      
begin
  browser.goto(url)
  browser.goto url
  browser.driver.execute_script( "window.scrollBy(0,document.body.scrollHeight/2)" )
  sleep 1
  browser.driver.execute_script( "window.scrollBy(0,document.body.scrollHeight)" )
  sleep 1
  response = browser.html
  fileHtml = File.new("response_linkedin.html", "wb+")
  fileHtml.puts(response)
  fileHtml.close
  browser.close
  response
rescue Exception => e
  raise e.message.to_s
ensure
  browser.close
end

问题是,当我尝试执行脚本window.scrollBy(0,document.body.scrollHeight/2)滚动窗口时,我的代码返回错误,如下所示:

  

“errorMessage”:“拒绝将字符串评估为JavaScript,因为'unsafe-eval'不是以下内容安全策略指令中允许的脚本源

我想知道为什么我无法在phantomjs内运行脚本?注释:我正在使用phantomjs版本2.2.1,因为有些人建议我降级版本1.9.8(source),不幸的是降级到版本1.9.8似乎不起作用。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

在phantomjs中运行javascript不应该有任何问题。

  1. 如果您需要使用Watir在视口中移动,请尝试watir-scroll,它会改变生活。
  2. 使用最新版本的Watir,您现在可以轻松尝试最新的Chrome Headless功能:

    Watir.browser.new(:chrome,{headless:true,args:args}

  3. 使用phantomjs maintainer stepping down,Chrome和Linux中的无头功能将会有更多的精力。 Firefox浏览器。