如何在Web浏览器中控制文件选择窗口

时间:2017-03-27 13:11:40

标签: c# selenium-webdriver

我有一个程序,它使用WebDriver浏览网页并做一些事情。我遇到了问题:当我需要在文件选择窗口中选择文件时。我知道有一个AutoIt可以做到。但有两点:

        
  1. AutoIt需要安装在运行程序的计算机上
  2.     
  3. 安装文件出错了,你需要去regedit并添加一些信息才能“正确完成安装”:)
  4. 如果第一点很好(因为AutoIt的安装程序很常见且可以理解),第二点会造成困难,因为我的程序用户不会打开regedit并深入研究它(即使修改上述步骤也是如此)问题很简单。)

    所以,我想做同样的事,但不使用其他程序。我只知道我可以使用

    [DllImport("user32.dll")]
    //here's should be name of the function to import
    
    但是怎么样? 任何人都可以帮我弄清楚如何完成这项任务:

          
    1. 控制文件选择窗口
    2.     
    3. 插入文件位置
    4.     
    5. 按“确定”按钮或只需按Enter
    6. 这就是我所需要的一切。

      以下是我使用AutoIt的代码示例:

      using AutoItX3Lib;
      
      AutoItX3 autoIt = new AutoItX3();
      autoIt.WinActivate("File Upload");
      Thread.Sleep(1000);
      autoIt.Send(@"file's location");
      Thread.Sleep(1000);
      autoIt.Send("{ENTER}");
      

1 个答案:

答案 0 :(得分:1)

这些步骤可以帮助您使用AutoIT:

  1. 当您抱怨注册表编辑时,请运行CCleaner一次以删除所有不需要的注册表项。
  2. 下载AutoIT&来自此link
  3. 的AutoIT编辑器
  4. 安装AutoIT& AutoIT编辑器安装程序。
  5. 让Selenium打开浏览器并点击"选择文件"按钮。
  6. 准备AutoIT脚本&将其转换为应用程序(.exe)。
  7. 使用Selenium代码中的exe文件获取选择文件的帮助。

    public class FileUploadAutoIT {
    
    public void testFileUpload() throws Exception
    {       
        System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("file:///C:/Utility/Resources/fileupload.html");
        driver.findElement(By.xpath(".//*[@id='1']")).click();
        Thread.sleep(5000);
        Runtime.getRuntime().exec("C:\\Utility\\Resources\\AutoIT\\Fileupload.exe");
    
        //Continue with your regular Selenium scripts
    
    
    }
    

    }

  8. 现在您回到网页上,让Selenium执行其他任务。

  9. 如果这有助于您,请告诉我。