由于Rad Uploader基本上是一个 Java Applet,您可以使用LiveConnect与之交互!
甚至还有一个用于它和 Selenium 的工具(虽然我没有使用它,所以我不知道它是否运作良好): http: //fest.codehaus.org/Selenium
如果它不起作用,那么您可能需要使用不同的自动化库来上传文件,因为 Selenium 既不能与 Java 小程序一起使用,也不能在浏览器之外工作。可能的解决方案包括将文件从窗口外拖放或 ( Ctrl+C+ Ctrl+Ving) 到您的上传器,或盲目单击“浏览”按钮...
编辑
我显然看错了产品,因为 OP 的代码显示它实际上是 Silverlight 元素,而不是 Java 小程序。
但是 - 知道有一个用于 Java 小程序的工具,我挖掘并找到了这些:
有一个将 Selenium RC 与 Silverlight 一起使用的工具!不知道它实际上有多好,但你可以试一试。是的,我知道它只是 Selenium RC,但你可以试试WebDriverBackedSelenium
......
Scott Hanselman 的博客(非常易读!) - “滥用” Silverlight 可以运行Scriptable
方法。它是为 Selenium IDE 编写的,但同样适用于WebDriver
.
Silverlight 的测试框架。由微软。Selenium 用于网页,尝试使用 Silverlight 魔法。
编辑2:
总是有我前面提到的选项。由于上传的东西是 no input
,而是一个 Silverlight 对象,并且没有用于 WebDriver 的 API 允许您使用浏览器对话框(或 Silverlight 对象),您可以试试这个:
单击 Silverlight 元素后,将弹出一个您无法控制的窗口。在我所知道的浏览器和操作系统中,您几乎可以假设在打开窗口后,光标在File name
输入中。请确保这个假设在你的情况下也是正确的。
如果没有,您可以尝试按 跳到它Alt + N,至少在 Windows 上...
(Java 代码如下!我真的不知道 C#。不过,它在 Java 中工作。C# 的类与 Java 的类是类似Robot
的SendKeys
)
如果是,您可以使用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);
这很糟糕,但它应该工作。请注意,您可能需要这些:如何让 Robot 键入 `:`?并将字符串转换为 KeyEvents