我正在尝试使用 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%;">
这是上传字段的部分代码
谢谢。
最佳答案
自 Rad Uploader基本上是一个Java Applet,你可以使用LiveConnect与它互动!
它和 Selenium 甚至还有一个工具(虽然我没有使用它,所以我不知道它是否有效):http://fest.codehaus.org/Selenium
如果它不起作用,那么您可能需要使用不同的自动化库来上传文件,因为 Selenium 既不能与 Java applet 一起工作,也不能在浏览器之外工作。可能的解决方案包括将文件从窗口外拖放或 (Ctrl+C + Ctrl+Ving) 到您的 uploader ,或盲目单击浏览按钮...
编辑
我显然看错了产品,因为 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
)
如果是,您可以使用Robot
“盲目”输入路径。类(class)。在您的情况下,这会妨碍:
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
关于testing - 如何使用 selenium RC 上传文件(使用 raduploader)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027114/