0

Mechanize を使用してフォーム (ファイルのアップロードを含む) への入力を自動化しようとしています。GUI インターフェイスでプロセスを実行したところ、ファイルが正常にアップロードされたので、ファイルが破損していないことはわかっていますが、mechanize スクリプトを実行すると失敗します。スクリプトは正しく実行され、デバッグによるとファイルがアップロードされましたが、Canvas (アップロード先のサービス) はファイルを読み取れなかったと言っています。Canvas サポートに連絡しましたが、システムの非標準的な使用法であるため、サポートできません。

これがスクリプトです(匿名化されています):

 09 mech = Mechanize.new
 10 mech.log = Logger.new(STDOUT)
 11 mech.user_agent_alias = 'Mac Mozilla'
 12 mech.get("https://ucdenver.test.instructure.com") do |page|
 13   page.form_with(:action => "/login") do |f|
 14     user_field = f.field_with(:name => "pseudonym_session[unique_id]")
 15     user_field.value = user
 16     pwd_field = f.field_with(:name => "pseudonym_session[password]")
 17     pwd_field.value  = pwd
 18   end.submit
 19 end
 20
 21 mech.get("https://ucdenver.test.instructure.com/accounts/1") do |page|
 22   page.form_with(:action => "/accounts/1/courses") do |f|
 23     course_field = f.field_with(:name => "course[name]")
 24     course_field.value = "38492"
 25   end.submit
 26 end
 27
 28 mech.page.link_with(:href  => %r/settings/,
 29                     :class => "settings").click
 30
 31 mech.page.link_with(:href => %r/import/,
 32                     :text => %r/Import Content/).click
 33
 34 mech.page.link_with(:href => %r/imports\/migrate/,
 35                     :text => %r/Import content from a content package/).click
 36
 37 mech.page.form_with(:action => %r/imports\/migrate/) do |f|
 38   export_system = "migration_settings[migration_type]"
 39   f[export_system] = "blackboard_exporter"
 40   f.file_uploads.first.mime_type = "application/zip"
 41   f.file_uploads.first.file_name = bkb_export
 42 end.submit

キャンバスのサポートは、サーバーが返すと述べました:

Could not unzip archive file, exit status 9, message:     
[/mnt/var/web/migration_tool/data/attachment_420130214-13303-sv6ue5-0.jpg] End-of-central-
directory signature not found. Either this file is not a zipfile, or it constitutes one 
disk of a multi-part archive. In the latter case the central directory and zipfile comment 
will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in 
one of /mnt/var/web/migration_tool/data/attachment_420130214-13303-sv6ue5-0.jpg or 
/mnt/var/web/migration_tool/data/attachment_420130214-13303-sv6ue5-0.jpg.zip, and cannot 
find /mnt/var/web/migration_tool/data/attachment_420130214-13303-sv6ue5-0.jpg.ZIP, period.

残念ながら、そのエラーは私には意味がありませんが、スクリプトが .zip ファイルをアップロードしているときに、いくつかの .jpg を参照するのは奇妙に思えます。アイデアや支援をいただければ幸いです。有用な情報を省略した場合は、喜んで追加情報を提供します。

本当にやりたいと思っているなら、http://canvas.instructure.comで無料のアカウントにサインアップして、自分でコード/ネットワーク アクティビティを確認してください。

4

1 に答える 1