将图像上传到<div> selenium C#

时间:2016-09-08 15:10:13

标签: c# selenium

我一直试图将图片上传到这个div:

<div class="drop-box ng-pristine ng-untouched ng-valid" ngf-select="" ngf-drop="" ng-model="file" ngf-accept="'*'" accept="*" ngf-drag-over-class="{accept:'dragover', reject:'dragover-err', delay:100}" ngf-validate="{size: {min:'5KB', max:'512MB'}}" ngf-keep="keep" ngf-keep-distinct="keepDistinct" ngf-reset-on-click="resetOnClick" ngf-reset-model-on-click="true" ngf-stop-propagation="true" ngf-allow-dir="false" ngf-drop-available="dropAvailable">
    <i class="ti-image"></i>
    <i class="ti-video-clapper"></i>
    <p class="upload-text ng-scope" translate="">Drag and Drop an Image or Video, or Click Here to Start.</p>
    <div class="loader hidden" id="loader">
        <img src="http://cdn.gramblr.com/images/ajax-loader-upload-step1.gif">
    </div>

</div>

我正在尝试通过查找元素然后尝试将SendKeys与图像路径一起使用来实现:

upload.SendKeys(path);

收到的错误是:unknown error: cannot focus element

我被困在这里,我不知道是什么阻止我上传图片,我知道当你将图片上传到<input>时这个方法有效,也许这就是为什么它没有工作

我怎样才能将图片上传到这个div?

2 个答案:

答案 0 :(得分:0)

错误意味着您基本上是将密钥发送到无法聚焦和发送密钥的元素。换句话说,upload不是指input元素,而是应该。

使用input查找相应的type="file"元素并向其发送密钥。该元素可以隐藏 - 在这种情况下,您可以将其显示,请参阅this answer并附带示例代码。

答案 1 :(得分:0)

在Gramblr中遇到同样的问题并解决它。请试试这个:

driver.findElement(By.xpath("//input[@type='file']")).sendKeys(yourimage);

有一个隐藏的输入类型文件,并且与我们需要按的位置

非常不相关