2

リンクがクリックされたときに、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 のリンクをクリックしようとすると、表示されないというエラーが表示されます。

4

2 に答える 2

0

href="javascript:"次のようなネイティブ JavaScript の click() メソッドを使用するアンカー タグの場合:

WebElement wwwLink = ((FindsByCssSelector) webDriver)
                .findElementByCssSelector("table[id='initiatorsTable'] tbody tr:not([class^='empty']) td[class='first'] a");

JavascriptExecutor exec = (JavascriptExecutor) webDriver;
exec.executeScript("arguments[0].click()", wwwUrl);

//TODO: wait for action code ...
于 2013-09-17T10:43:45.403 に答える