4

Selenium 2 では、このWebDriverオブジェクトは、getPageSource()CSS、JS、画像などを一切使用せずに未加工の HTML ページを保存するメソッドのみを提供します。

参照されているすべてのリソースを HTML ページにも保存する方法はありますか (HtmlUnit と同様HtmlPage.save())。

4

3 に答える 3

0

セレンの相互作用を使用して処理できます。

    using OpenQA.Selenium.Interactions;

それを行う方法もいくつかあります。私がこのようなことを処理する方法の 1 つは、ページの中心にあるアイテム、または保存したい領域を見つけて、アクション ビルダーを実行することです。

    var htmlElement = driver.FindElement(By.XPath("//your path"));
    Actions action = new Actions(driver);
    try
    {
     action.MoveToElement(htmlElement).ContextClick(htmlElement).SendKeys("p").Build().Perform();
    }
    catch(WebDriverException){}

これは単に領域を右クリックし、右クリック時に Firefox の「ページを名前を付けて保存」ホットキーであるキー「p」を送信します。もう 1 つの方法は、ビルダーにキーを送信させることです。

    var htmlElement = driver.FindElement(By.Xpath("//your path"));
    action.MoveToElement(htmlElement);
    try 
    {
      action.KeyDown(Keys.Control).SendKeys("S").KeyUp(Keys.Control).Build().Perform();
    }
    catch(WebDriverException){}

どちらの場合も、Windows フォームなどのドライバーのスコープを離れる場合は、ポップアップ時に Windows フォームを処理するようにケース/コードを切り替える必要があることに注意してください。Selenium には、キーが送信された後に何も返されないという問題もあるため、Try Catches はそのためにあります。誰かがそれを回避する方法を持っているなら、それは素晴らしいことです。

于 2014-01-17T19:26:44.260 に答える
0

いいえ。可能であればHtmlUnit、この特定のタスクを選択してください。

あなたができる最善のことは、私が思うにRobot. Ctrl+Sを同時に押し、 で確定しEnterます。それは盲目で、不完全ですが、あなたのニーズに最も近いものです。

于 2012-06-07T20:35:05.567 に答える