我正在尝试使用selenium
上传文件。但问题是我的上传字段不像
<input type="file".....> [where i can directly say "selenium.type("xpath ","file path") ]
但是在这里,对于上传文件,我们使用的是Rad Uploader,即使我点击uploader
,也没有在selenium IDE中录制任何内容。
是否有人知道如何使用Selenium
Raduploader 上传文件?
<object height="22px" type="application/x-silverlight-2" data="data:application/x-silverlight-2,"
id="ctl00_ctl00_ContentPlaceHolder1_mainTabContainer_thirdTab_ChildPlaceHolderCampVolunteers_fileUploadVolunteersilverlight04"
class="ruObject" style="width: 100%;">
这是上传字段
代码的一部分感谢。
答案 0 :(得分:1)
由于Rad Uploader基本上是一个Java Applet,您可以使用LiveConnect与它进行交互!
甚至还有一个工具和Selenium(虽然我没有使用它,所以我不知道它是否运作良好):http://fest.codehaus.org/Selenium
如果它不起作用,那么您可能需要使用不同的自动化库来上传文件,因为Selenium既不能用于Java applet,也不能用于浏览器之外。可能的解决方案包括从窗口外部向上传器拖放或( Ctrl + C + Ctrl + V >),或者在“浏览”按钮上单击...
我显然看错了产品,因为OP的代码显示它实际上是一个Silverlight元素,而不是Java applet。
但是 - 知道Java applet有一个这样的工具,我挖掘并发现了这些:
There is a tool for using Selenium RC with Silverlight!不知道它的实际效果如何,但你可以尝试一下。是的,我知道它只是Selenium RC,但您可以使用WebDriverBackedSelenium
...
Scott Hanselman的博客(非常易读!) - “滥用”Silverlight可以运行Scriptable
方法。它是为Selenium IDE编写的,但同样适用于WebDriver
。
A testing framework for Silverlight.由微软提供。 Selenium用于网页,尝试使用Silverlight魔法。
编辑2:
我总是提到我之前提到过的选项。由于上传内容不是input
,而是一个Silverlight对象,而且WebDriver没有允许您使用浏览器对话框(或Silverlight对象)的API,您可以试试这个:
单击Silverlight元素后,会弹出一个窗口,表示您无法控制。在我所知道的浏览器和操作系统中,您几乎可以假设在窗口打开后,光标位于File name
输入中。请确保在您的情况下这种假设也是正确的。
如果没有,你可以尝试按 Alt + N 跳转到它,至少在Windows上...
(Java代码如下!我真的不知道C#。它在Java中工作.C#的类与Java的Robot
类似SendKeys
) < / p>
如果是,您可以使用Robot
类“盲目地”输入路径。在你的情况下,这将是一种方式:
driver.findElement(By.id("SWFUpload_0")).click();
Robot r = new Robot();
r.keyPress(KeyEvent.VK_C); // C
r.keyRelease(KeyEvent.VK_C);
r.keyPress(KeyEvent.VK_COLON); // : (colon)
r.keyRelease(KeyEvent.VK_COLON);
r.keyPress(KeyEvent.VK_SLASH); // / (slash)
r.keyRelease(KeyEvent.VK_SLASH);
// etc. for the whole file path
r.keyPress(KeyEvent.VK_ENTER); // confirm by pressing Enter in the end
r.keyRelease(KeyEvent.VK_ENTER);
很糟糕,但应该有用。请注意,您可能需要这些:How can I make Robot type a `:`?和Convert String to KeyEvents