首页 文章

在将脚本添加到DOM中之后,JQuery无法与PhantomJS一起用于Watir

提问于
浏览
1

我正在尝试使用 WatirPhantomJS 与没有JQuery的网站进行交互 .

browser = Watir::Browser.new :phantomjs, :args => ['--ignore-ssl-errors=yes']
browser.goto 'http://putlocker.is/'

browser.execute_script(    
  "var the_script = document.createElement('script');
  the_script.setAttribute('src','http://code.jquery.com/jquery-1.11.0.min.js');
  document.body.appendChild(the_script);"
)

browser.execute_script('$("div").hide();')

使用 Firefox 而不是 PhantomJS 它工作正常 - JQuery加载到页面上,我可以使用JQuery管理元素 . 但 PhantomJS 引发了这个错误:

{“errorMessage”:“找不到变量:$”,“request”:{“headers”:{“Accept”:“application / json”,“Accept-Encoding”:“gzip; q = 1.0,deflate ; q = 0.6,同一性; q = 0.3“,”连接“:”关闭“,”内容长度“:”41“,”内容类型“:”application / json; charset = utf-8“,”主机“:” 127.0.0.1:8910" , “用户代理”: “红宝石”}, “httpVersion”: “1.1”, “方法”: “POST”, “后”: “{\” 脚本\“:\ “$(\” DIV \ “) . 隐藏(); \” \ “ARGS \”:[]}”, “URL”: “/执行”, “urlParsed”:{ “锚”: “” “查询”: “”, “文件”: “执行”, “目录”: “/”, “路径”: “/运行”, “相对”: “/运行”, “口”: “”,”主机 “:””, “密码”: “”, “用户”: “”, “用户信息”: “”, “权威”: “”, “协议”: “”, “源”: “/执行”, “queryKey”:{},“chunks”:[“execute”]},“urlOriginal”:“/ session / 84f7d6d0-7035-11e4-a8b8-85c94f571d8e / execute”}}(ReqHand)

我想这个问题与这个问题有某种关系:Can't find variable - PhantomJS . 但是如何更改 Watir 代码以使其有效?

1 回答

  • 2

    PhantomJS似乎与Firefox不同 . 可能是PhantomJS的速度更快,也可能是PhantomJS不等待脚本下载 . 在任何一种情况下,您都需要等待脚本加载 . 你当然可以等待一段时间,但最好等待适当的时间 .

    browser.execute_script(injectScript)
    Watir::Wait.until { browser.execute_script("return !!window.jQuery") }
    browser.execute_script('$("div").hide();')
    

相关问题