Selenium文件上传

时间:2012-04-11 06:56:38

标签: xpath selenium selenium-rc

如何使用selenium自动上传文件。

如何提供文件路径??

我的TextBox是Readonly。我无法直接在textbox

中键入文件路径

另外,如何在该文件完全上传之前停止selinum服务器。??

我的文件上传字段是一个不可见的字段。我发现它的代码使用firebug添加。

在添加文件代码之前是这样的。

<input id="ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState" type="hidden" name="ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState" autocomplete="off" value="{'isEnabled':'true','uploadedFiles':[]}">

添加文件(doc文件)后。代码更改为

<input id="ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState" type="hidden" name="ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState" autocomplete="off" value="{'isEnabled':'true','uploadedFiles':[{"fileInfo":{"FileName":"scope.docx","ContentType":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","ContentLength":12887},"metaData":"/wEFsAF7IlRlbXBGaWxlTmFtZSI6ImZyeWd1NGNqLmt1YSIsIkFzeW5jVXBsb2FkVHlwZU5hbWUiOiJUZWxlcmlrLldlYi5VSS5VcGxvYWRlZEZpbGVJbmZvLCBUZWxlcmlrLldlYi5VSSwgVmVyc2lvbj0yMDExLjEuNTE5LjM1LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTEyMWZhZTc4MTY1YmEzZDQiffOraDjiYXPavAAMYOUAVVhGEKk8"}]}">

这里的Xpath是什么?

我尝试使用xpath id =“ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState”。我使用的代码是

selenium.type("id="ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState","c:\\docfile1.doc");

但它不起作用。

帮助我..

2 个答案:

答案 0 :(得分:1)

您可以使用

selenium.type("xpath of text box","path of your file")

IDE for IDE

command=type
target=xpath_of_text_box
value=Path_of_your_file

示例:

selenium.type("id=cvfile", "D:\\Automation\\resume.doc");

答案 1 :(得分:1)

input的XPath表达式为//input[@id='ctl00_ContentPlaceHolder1_AsyncfileUpload_ClientState']

然而,我担心这不起作用,因为Selenium通常拒绝使用隐形元素。此外,hidden <inputs>通常只是预填充数据的容器或用于脚本验证和编辑数据的容器。

你应该寻找一个<input type='file' />,如果有一些,或者可能是一个javascript处理封闭元素的点击(但坦率地说,通常情况并非如此) - 脚本往往会对输入进行编辑,而不是点击它们。)

如果找不到,请发布更多代码。最好的事情是SSCCE,所以抓住页面的来源并使其裸露,从中删除我们不需要的一切。我们喜欢代码。我们喜欢任何裸体的东西。

关于等待上传完成:没有这样的默认事情。如果在通常的表单上载期间发送文件(通过单击“提交”按钮),则浏览器将等待。如果立即上传,您将不得不巧妙地等待。成功上传后实现更改,然后等待该元素/消息出现。使用Selenium 2(WebDriver),这can be done非常easily