在IE11中使用Selenium Webdriver 2.53.0上传文件

时间:2016-06-06 05:52:52

标签: c# selenium selenium-webdriver

我有这个问题:

  

OpenQA.Selenium.ElementNotVisibleException:不显示元素。

在IE11 + WebDriver 2.53.0中使用Selenium上传文件。 Firefox正确使用此代码!

我尝试过一些像threadleep等待的东西,但没有任何帮助。我也试过点击元素(按钮)然后发送密钥,但它也不起作用。

这是我的HTML:

<div class="input-group col-sm-12">
  <div class="input-group-btn" data-bind="unblocked: CanUploadApplicationDocuments">
    <div class="btn btn-default btn-file">Browse
      <input type="file" id="ApplicationDocumentsUpload" data-bind="event: { change: ApplicationFilesUploaded }" name="ApplicationDocumentsUpload" multiple="multiple"/>
    </div>
  </div>
  <input type="text" class="form-control" id="ApplicationDocumentsUploadText" readonly>
</div>

这是我的Selenium:

var dataCvPath = ResourceProvider.Provide(@"\Resources\CV\dataCV.docx");
var upload = driver.FindElement(By.Name("ApplicationDocumentsUpload"));
upload.SendKeys(dataCvPath);

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

确保您提供SendKeys的完整路径:

string dataCvPath = Path.GetFullPath(ResourceProvider.Provide(@"\Resources\CV\dataCV.docx"));
if (!File.Exists(dataCvPath))
    throw new Exception("File not found: " + dataCvPath);

var upload = driver.FindElement(By.Name("ApplicationDocumentsUpload"));
upload.SendKeys(dataCvPath);

请注意,如果您正在使用远程会话,则还需要设置文件检测器:

driver.FileDetector = new LocalFileDetector();