Testing 如何使用selenium RC上传文件(使用raduploader)?
我正在尝试使用Testing 如何使用selenium RC上传文件(使用raduploader)?,testing,selenium,selenium-rc,radupload,Testing,Selenium,Selenium Rc,Radupload,我正在尝试使用selenium上传文件。但问题是我的上传字段不像 <input type="file".....> [where i can directly say "selenium.type("xpath ","file path") ] 这是上传字段代码的一部分 谢谢。因为它基本上是一个Java小程序,所以您可以使用它进行交互 甚至还有一个工具用于it和Selenium(尽管我没有使用它,所以我无法判断它是否工作良好): 如果它不起作用,那么您可能需要使用不同的自动化库来上
selenium
上传文件。但问题是我的上传字段不像
<input type="file".....> [where i can directly say "selenium.type("xpath ","file path") ]
这是上传字段代码的一部分
谢谢。因为它基本上是一个Java小程序,所以您可以使用它进行交互
甚至还有一个工具用于it和Selenium(尽管我没有使用它,所以我无法判断它是否工作良好):
如果它不起作用,那么您可能需要使用不同的自动化库来上传文件,因为Selenium既不能与Javaapplet一起工作,也不能在浏览器之外工作。可能的解决方案包括从窗口外拖放或(Ctrl+C+Ctrl+Ving)文件到上传程序,或者盲目点击浏览按钮
编辑 我显然看错了产品,因为OP的代码显示它实际上是一个Silverlight元素,而不是Java小程序 但是,我知道有一个用于Java小程序的工具,我挖掘并发现了以下内容: 不知道它到底有多好,但你可以试试。是的,我知道这只是Selenium RC,但你可以试试 Scott Hanselman的博客(非常可读!)-“滥用”Silverlight可以运行
可编写脚本的方法。它是为Selenium IDE编写的,但同样适用于WebDriver
微软。Selenium是用于网页的,试试这个来获得一些Silverlight魔法
编辑2:
我前面提到的选择总是有的。由于上载不是输入,而是Silverlight对象,并且没有允许您使用浏览器对话框(或Silverlight对象)的WebDriver API,因此您可以尝试以下操作:
单击Silverlight元素后,将弹出一个您无法控制的窗口。在我所知道的浏览器和操作系统中,您几乎可以假设在打开窗口后,光标位于文件名
输入中。请确保这个假设在你的情况下也是正确的
如果没有,您可以尝试通过按Alt+N跳转到它,至少在Windows上是这样
(Java代码如下!我真的不知道C#。它在Java中工作,不过.C#的类类似于Java的Robot
is)
如果是,您可以使用类“盲目地”在其中键入路径。在您的情况下,这将是:
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);
这很糟糕,但应该行得通。请注意,您可能需要这些:并且当您发布有关堆栈溢出的问题时,应该将其正确格式化,并突出显示所有重要的关键字。请阅读本文,尤其是最后一行。实际上,您提供的链接基于java。但是我正在使用c#。我使用了firebug并找到了upload字段的html代码。就像这样,
我尝试了selenium。键入命令,但它不起作用。
这是上传字段代码的一部分。好吧,这是Silverlight对象,不是Java小程序(嗯,所以有更多的Rad上传程序。我在看哪个是Java小程序。)这个问题被编辑了,我找不到任何有用的信息。我已经从上面的链接下载了silverenium(silverlight+selenium)。但我对此无能为力。
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);