Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Testing 如何使用selenium RC上传文件(使用raduploader)?_Testing_Selenium_Selenium Rc_Radupload - Fatal编程技术网

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);