【问题标题】:Refused to evaluate a string as JavaScript because 'unsafe-eval'拒绝将字符串评估为 JavaScript,因为 'unsafe-eval'
【发布时间】:2018-01-15 00:34:11
【问题描述】:

大家好,我正在使用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 版似乎不起作用。谁能帮帮我?

【问题讨论】:

    标签: ruby selenium phantomjs watir


    【解决方案1】:

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

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

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

    使用phantomjs maintainer stepping down,将有更多的精力用于 Chrome 和 Firefox 中的无头功能。

    【讨论】:

    猜你喜欢
    • 2014-09-08
    • 2016-08-27
    • 2018-11-04
    • 1970-01-01
    • 2022-01-19
    • 2023-01-11
    • 2022-11-23
    • 2019-06-22
    • 1970-01-01
    相关资源
    最近更新 更多