リンクがクリックされたときに、Selenium WebDriver with Java を使用してページにレポートが生成されるかどうかを確認しようとしています。
何が起こるかというと、ページにたくさんのリンクがあり、それらのほとんどをクリックすると別のページに移動し、そこで詳細を自動入力してフォームを送信し、レポートが生成されたことを確認します。
ただし、クリックすると一部の JS が実行され、数秒後に同じページにレポートをダウンロードするための新しいリンクが表示される 3 つのレポートがあります。
このリンクをクリックするにはどうすればよいですか?
ページ上のすべてのリンクを WebElements のリストに読み込んでから、href に javascript: to void[0]; が含まれている場所をループしています。
次に、リスト内のその要素でクリック メソッドを呼び出してみます。allLinks.get(i).click();
これは私が他のレポートに対して行うのと同じことであり、正常に動作しますが、これらの 3 つで「要素は現在表示されていないため、操作できない可能性があります」というエラーが表示されます。
JS の実行を開始するリンクを調べると、firebug を使用すると、次のように表示されます。
<a onclick="requestReportGeneration('2cad4d4e5c8855c47a88b6ddf8345735', 'reportDiv33','CSV')" href="javascript:void[0];">CSV</a>
誰でもリンクをクリックする方法を提案できますか?
このページには CSV というリンクがたくさん含まれているため、リンク テキストだけを使用することはできません。
更新: 私はこれについて考えたところ、役立つかもしれません。レポートのリンクを含むページに初めてアクセスすると、「レポートの注文」と表示されます。見出しをクリックして、JS 関数を呼び出してそのセクションを展開し、リンクを表示する必要があります。
このページに来たときに、ページソースのすべてのhrefを読んでdriver.get(reportList.get(i);を実行するだけなので、実際にはリンクをクリックしていないため、レポートが機能します。
見出しの xpath を取得してクリックするためのリンクを追加しましたが、href または javascript: void のリンクをクリックしようとすると、表示されないというエラーが表示されます。