testing - 如何使用 selenium RC 上传文件(使用 raduploader)?

标签 testing selenium selenium-rc radupload

我正在尝试使用 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_ChildPlaceHolderCa‌​mpVolunteers_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 的 RobotSendKeys )

如果是,您可以使用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/

相关文章:

Linux命令的Python功能测试

java - 使用 Selenium 获取标签之间的文本

python Selenium : does not wait until page is loaded after a click() command

desktop - Selenium RC : Running browser on another X11 desktop

java - Selenium :- In my application there is button whose id is getting randomly generated, 如何找到那个按钮

laravel - 测试一个方法是否被调用

unit-testing - 如何在不修改数据库的情况下运行集成测试?

java - JUnit 生命周期

c# - selenium-rc 无法连接到远程服务器

java - 带有 Chrome 驱动程序的 Selenium 网格(WebDriverException : The path to the driver executable must be set by the webdriver. chrome.driver 系统属性)