无法使用selenium webdriver在python中上传图像/文件

时间:2014-05-25 10:43:46

标签: python selenium file-upload selenium-webdriver

我无法上传和保存图片。

以下是使用UI促进文件上传的代码段。首先,只有上传按钮可见,一旦从上传器中选择了图像,就可以看到保存按钮。

 <td colspan="1" class="actions">
                <input type="button" class="button" name="logo" id="logo-f-upload" value="Upload Image"/>
                <input type="file" id="logo-upload" accept="image/*" name="logo-upload" style="display:none" />
                <input type="submit" value="click to save" name="submit_logo_now" class="main submit_dm logo-save-focused" style="display: none"/>
                </br>
</td>

我尝试了driver.find_element_by_id("logo-f-upload").send_keys(os.getcwd()+"/image_test.png")

以及

driver.find_element_by_id("logo-upload").send_keys(os.getcwd()+"/image_test.png")

但是它不会在这个阶段抛出任何错误,但是在下一个它说“元素不可见......”即。保存按钮。在UI上,模拟此时,文件上传器不会打开,但file_upload按钮值会更改为图像的路径,然后会中断。

1 个答案:

答案 0 :(得分:1)

我相信这只是一个JS hack的答案:问题是logo-upload输入的样式设置为display:none,因此,selenium无法找到元件。适用于我的解决方案是使用javascript将样式设置为display:block,之后使用send_keys(img_path)工作正常。

dr.execute_script("document.getElementById('logo-upload').setAttribute('Style','display:block')")