2

このコードを使用すると、Webサイトに正しくアップロードするファイルを取得できません。

browser.form(:index, 2).file_field(:name, "filedata").set(""+folderName+"/iTunesArtwork")

コードが実行されると、回転するホイールを表示してアップロード中であることが示されますが、実際にはアップロードされず、ホイールは回転し続けます。アップロードは問題ありませんが、自分でアップロードすると。

htmlへのリンクは次のとおりです:http: //f.cl.ly/items/3v3o1p1g0t2S1q3q3Q1h/Text%202011.09.03%2011:40: 06%20PM.html

ご覧のとおり、htmlはフォームタグに含まれています。最初にフォームを経由せずにfile_fieldにアクセスしようとすると、要素が表示されていないために操作できないというエラーが表示されます。誰が何が起こっているのか手がかりを持っていますか?

4

3 に答える 3

2

アップロードするローカルファイルは、ローカルに存在していてはなりません。

HTMLを次の場所にアップロードしました:http://dl.dropbox.com/u/18859962/uploader.html

私はこれを試しました:

ruby-1.9.2-p290 :001 > require "watir-webdriver"
 => true 
ruby-1.9.2-p290 :002 > b = Watir::Browser.start "http://dl.dropbox.com/u/18859962/uploader.html"
 => #<Watir::Browser:0x..fdea53ebfe3940b9a url="http://dl.dropbox.com/u/18859962/uploader.html" title="untitled"> 
ruby-1.9.2-p290 :003 > b.file_field.exists?
 => true 
ruby-1.9.2-p290 :004 > local_file = "/users/me/ie.html"
 => "/users/me/ie.html" 
ruby-1.9.2-p290 :005 > File.exists? local_file
 => true 
ruby-1.9.2-p290 :006 > raise "error" unless File.exists? local_file
 => nil 
ruby-1.9.2-p290 :007 > b.file_field.set local_file
 => "/users/me/ie.html

このホストされたhtmlファイルに対してスクリプトを実行し、報告してください。

また、ローカルファイルが存在しない場合は例外を発生させて、そのエラーを排除する必要があります。

于 2011-09-03T09:55:49.720 に答える
1

file_field.setにファイルへの絶対パスを指定し始めるまで、file_field.setを機能させることができませんでした。

私のコードは次のようになります。

relative_path = 'image.png'
full_path = File.expand_path relative_path
browser.file_field(:id, 'file_field_id').set full_path

お役に立てれば!

于 2011-12-01T16:13:54.227 に答える
0

あなたの質問のこの部分に関して:

ご覧のとおり、htmlはフォームタグに含まれています。最初にフォームを経由せずにfile_fieldにアクセスしようとすると、要素が表示されていないために操作できないというエラーが表示されます。誰が何が起こっているのか手がかりを持っていますか?

最も可能性の高い答えは、同じ名前で現在ユーザーに表示されていない別の入力フィールドがDOMにある可能性があるということです。ページ全体を見てすべてのHTMLを見ることができなければ、はっきりとは言えませんが、そのエラーは、他の人と同じ名前またはテキストを持つコントロールを操作しようとしたときによく見られます。現在、表示されていません。私が使用していた名前またはテキストのページコードを検索すると、通常、他の要素が見つかります。対処方法を変更する(実行中に一意のコンテナーを指定するか:index、既存の識別子とともに値を追加することで、要素の「正しい」インスタンスを取得できるようになります)。

を使用:idしてフィールド(フィールドがある)を識別し、最初に外部(フォーム)コンテナ要素を指定しなくても、それが機能するかどうかを確認できます。有効なHTMLの場合、値はページ上で一意である必要があるため、IDで選択することをお勧めします。

それはあなたの質問の「なぜアップロードしないのか」という側面には対処していませんが、それはあなたが助けを必要としている本当の問題であると私は思います。しかし、それはあなたの質問のその側面に対処します。

残りの部分については、自分でサイトを操作することができなければ、なぜそれがそのように動作しているのかを言うのは難しいです。(サイトがiTunesの場合は、自動化を使用してサイトにアクセスすることについて、利用規約に記載されている内容を確認する必要があります)

于 2011-11-23T20:18:28.427 に答える