2017-08-07 208 views
0

嗨,大家好,我正在使用phantomjs来进行自动化测试。这里是我的代码:拒绝评估字符串为JavaScript,因为'unsafe-eval'

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的,因为“不安全-EVAL”不是脚本在下面的内容安全策略指令

我想知道我为什么不能内部phantomjs运行脚本注释所允许源的:我使用phantomjs版本2.2.1,对于一些人建议我降级版本1.9.8(source),不幸的是降级到版本1.9.8似乎不起作用。任何人都可以帮助我?

回答

1

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

  1. 尝试watir-scroll,如果您需要在Watir中移动视口,它会改变生活。
  2. 随着的Watir的最新版本,您现在可以轻松地尝试了最新的Chrome无头的特点:

    Watir.browser.new(:铬,{无头:真,ARGS:ARGS}

随着phantomjs maintainer stepping down,将有向无头功能执导了很多更多的精力在Chrome & Firefox浏览器。

+0

感谢你好,我想知道如果用'无头chrome',我怎么能欺骗与虚假用户代理的浏览器? –

+0

'options:{emu lation:{userAgent:'foo; bar'}' - https://github.com/watir/watir/blob/master/spec/browser_spec.rb#L83 – titusfortner

+0

谢谢队友你的建议可以帮助我很多 –