1

Firefoxのポップアップダウンロードウィンドウをセレンでキャンセルしようとしています。ウィンドウを切り替えてアラートウィンドウを閉じることはできますが、ダウンロードウィンドウを選択できないようです。何か案は?

周りを見回すと、Selenium RCはOSに依存しているため、ダウンロードウィンドウを処理できないようです。ただし、この問題はSelenium Webドライバーでも同じですか?これに対する解決策はautoitで実行できることは知っていますが、可能であればすべてをJavaSeleniumに保持したいと思います。ありがとう。

4

1 に答える 1

2

WebDriver はダイアログ ウィンドウと直接対話できません。これは、ダイアログ ウィンドウがオペレーティング システムのドメインであり、Web ページではないためです。ただし、名前空間 System.Windows.Forms の SendKeys クラス メソッド SendWait() を使用して、ダイアログ ウィンドウでアクションを実行することは可能です。

using System.Windows.Forms;

以下のコード例では、PLUpload ボタンが押され、アップロードするファイルを選択するための Windows ダイアログが開きます。

次の行は、表示されるダイアログ ウィンドウにキー値を送信するために書き込まれます。

SendKeys.SendWait(@"C:\Users\Public\Pictures\Sample Pictures\Dock.jpg");
SendKeys.SendWait(@"{Enter}");

C# の SendKeys クラスの詳細なリファレンスは、http://msdn.microsoft.com/en-au/library/system.windows.forms.sendkeys.aspxにあります。

using System;
using System.Windows.Forms;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using OpenQA.Selenium.Support;
using OpenQA.Selenium.Interactions;
using NUnit.Framework;
namespace BusinessCreation
{
    class PlUpload
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver();
            driver.Navigate().GoToUrl("http://www.plupload.com/example_queuewidget.php");
        driver.FindElement(By.XPath("//object[@data='/plupload/js/plupload.flash.swf']")).Click();
           SendKeys.SendWait(@"C:\Users\Public\Pictures\Sample Pictures\Dock.jpg");
           SendKeys.SendWait(@"{Enter}");
        }
     }
}
于 2013-03-24T02:43:54.583 に答える