0

別の URL にリダイレクトする JavaScript をトリガーするリンクをクリックするために HtmlUnit 2.10 を使用しています。JavaScript は window.location を使用してリダイレクトします。結果は、UR​​L を使用してページを直接開いた場合と同じではありません。リダイレクト ページの結果は、ページがまだ読み込まれているように見えますが、そうではありません。

送信されたリクエストを見ると、HtmlUnit がページをリクエストし、リダイレクト先のページから ajax リクエストを送信しているように見えますが、表示されません。ページのプレビューを取得するために、「page.asXml()」を .html ファイルに IO 書き込みしようとしましたが、新しいコンテンツがまだロードされているかのように、ほとんど何も含まれていません。しかし、ページが読み込まれるまで最大100秒待ってみました

synchronized (page) {
   page.wait(int x);
}

結果に違いはありません。

ページは現在ローカルでのみ実行されているため、このエラーの再現可能なスクリプトを提供することはできません。

何が間違っている可能性があるかについて何か考えはありますか?

編集: この問題は、jQuery 1.7.0 から jQuery 1.8.1 へのアップグレードで発生したようだと付け加えることができます。

4

2 に答える 2

0

redirectEnabledフィールドがに設定されるようにWebClientを設定していることを確認してくださいtrue。これを行うには、リクエストを実行する前にこの行を追加するだけです...

webClient.setRedirectEnabled(true);

これにより、リダイレクトの後にHtmlUnitクライアントが確実に続きます。

メソッドのドキュメントは次のとおりです。

于 2012-09-11T17:02:03.683 に答える
0

問題を完全に解決する方法はまだはっきりとはわかりませんが、問題をより深く調査する方法 (つまり、適切にリダイレクトされたかどうか) を想定しています。 cssSelector または xpath でリダイレクトしたい。次に、リダイレクト後に fluentWait() を呼び出します

  public WebElement fluentWait(final By locator){
            Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                    .withTimeout(30, TimeUnit.SECONDS)
                    .pollingEvery(5, TimeUnit.SECONDS)
                    .ignoring(NoSuchElementException.class);

            WebElement foo = wait.until(
    new Function<WebDriver, WebElement>() {
                public WebElement apply(WebDriver driver) {
                            return driver.findElement(locator);
                    }
                    }
    );
                               return  foo;              }     ;

ここで流暢な待機について読むことができます

リダイレクトされたページの Web 要素が返された場合。それ以外の場合は失敗します。これが何らかの形で役立つことを願っています。

于 2012-09-11T16:53:34.673 に答える