私は、ウェブページと相互作用し、ファイルをアップロードし、提出し、応答をダウンロードするスクリプトを持っています。最近、ウェブサイトを管理する当事者が何らかの変更を加えました。私は変更に適応しようとしていますが、私は固執する点があります。私はjavaとseleniumを使ってChromeブラウザを開きます。ページが開きます。以前はリセットボタン、アップロードボタン、ファイル選択ボタンの3つのボタンがありました。これは依然として時代の一部です。条件付き自動ウェブ介入
ただし、サイトが開くと、最初の2つのボタンのみが表示されます。アップロードボタンを手動でクリックすると、ページがリフレッシュされ、ファイルの選択ボタンが表示されることがわかりました。私は今これを私のコードに組み込もうとしています。ここに問題のビットがあります...
driver.get("http://apps.gdgps.net/apps_file_upload.php");
System.out.println("test a");
if (driver.findElement(By.cssSelector("input[class*='upfile_ultimo']"))!= null){
System.out.println("test a - passed");
driver.findElement(By.cssSelector("input[class*='upfile_ultimo']")).click();
}else{
System.out.println("test a - failed");
driver.findElement(By.cssSelector("input[id='upload_button']")).click();
driver.findElement(By.cssSelector("input[class*='upfile_ultimo']")).click();
}
したがって、「テストa」は常に印刷されます。ファイルの選択ボタンがある場合は、 "test a - passed"と表示され、ファイルがアップロードされます。ボタンが表示されていない場合は、「テストa - 失敗」と表示されず、すべてがハングアップします。アップロードボタンは決して押されません。
なぜこれが機能しないのか分かりません。私は、if文の上にupload_button行を移動して実験しました。それは独立して実行されます。 if文に置かれたときには何が違うでしょうか?
ありがとうございます。あなたのコードは私のものよりもエレガントです。しかし、失敗してもアップロードボタンはクリックされません。しかし、パスはまだうまくいく。 Btw、それは "test a - failed"という印字はしません。これは、if文に否定的な意味を持たず、肯定的なものだけを認識することを意味しますか? – Iakona
最近のこのコードでは、ボタンが常に存在する可能性があります。ページに応じて待機を追加する必要があるかもしれません。 – JeffC
私は最大30分待っています。それはエラーではありません。手動でアップロードボタンをクリックするまで、ただそこにハングアップします。その後、それは上に移動します。 – Iakona