5

I am trying to use selenium webdriver to automate web application. So say the dialog below pops up, my goal is to automatically click Save File, and then hit Ok.

Windows Save/Open File DownloadDialouge

4

4 回答 4

3

WebDriver 不能直接与对话框窗口交互,这是因为对话框窗口是操作系统的域而不是网页。然而,它可以使用名称空间 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_queuew               idget.php");
               driver.FindElement(By.XPath("//object[@data='/plupload/js/pluploa               d.flash.swf']")).Click();
               SendKeys.SendWait(@"C:\Users\Public\Pictures\Sample Pictures\Dock               .jpg");
               SendKeys.SendWait(@"{Enter}");
         }
    }
}
于 2013-03-24T03:53:52.753 回答
0

//文件保存代码

FirefoxProfile profile =new FirefoxProfile();

profile.setPreferences("browser.download.folderlist",0);

profile.setpreferences("browser.helperApps.neverAsk.saveToDisk",mimeType);//applicatio/zip

WebDriver driver = new FireforDriver(profile);

driver.get("http:seleniumhq.org/download");

driver.get("http://selenium.com/files/selenium.zip");

//文件打开代码

profile.setPreferences("browser.helperApps.neverAsk.open",mimeType);
于 2013-07-16T06:22:15.147 回答
0

单独使用 Selenium 是不可能的。

您必须将其与 AutoIT 结合使用:

http://www.autoitscript.com/site/autoit/

(或类似的东西)。

我还要指出,在大多数情况下,您可以简单地“发送”(使用特定语言绑定中的“发送密钥”方法/功能)将文件路径直接发送到上传控件,确保您单击实际Browse...按钮。一旦你这样做了,Selenium 的游戏就结束了。

于 2013-03-22T17:29:10.860 回答
0

使用此方法进行文件处理:

我们需要 :

jacob.jar下载

它将包含一个 jar 文件和 2 个 .dll 文件

AutoItX4Java.jar下载

public static void uploadFile(String path, String browser){

if(browser.equalsIgnoreCase("chrome")){

    if(x.winWaitActive("Open", "", 10)){
        if(x.winExists("Open")){
            x.sleep(500);
            x.send(path);
            x.controlClick("Open", "", "Button2");

        }
    }

}


if(browser.equalsIgnoreCase("firefox")){

    if(x.winWaitActive("File Upload", "", 10)){
        if(x.winExists("File Upload")){
            x.sleep(500);
            x.send(path);
            x.controlClick("File Upload", "", "Button2");

        }
    }
}

if(browser.equalsIgnoreCase("InternetExplorer")){

    if(x.winWaitActive("Choose File to Upload", "", 10)){
        if(x.winExists("Choose File to Upload")){
            x.sleep(500);
            x.send(path);
            x.controlClick("Choose File to Upload", "", "Button2");

        }
    }
}



}


public void test(){
    //Click on the Select button of the file upload
    uploadFile("Path", "chrome");


}

谢谢...不要单击接受或赞成,直到它适合您。如果它不适合您的意思,请发表评论..不要投反对票...

于 2014-02-06T11:19:30.423 回答