java如何使用Selenium WebDriver处理windows文件上传?
我在Stack Overflow上看到了很多关于使用Selenium WebDriver上传文件的问题和解决方案。但它们都不适用于以下场景
有人给出了如下解决方案
// assuming driver is a healthy WebDriver instance
WebElement fileInput = driver.findElement(By.name("uploadfile"));
fileInput.sendKeys("C:/path/to/file.jpg");
但我还是找不到窗户把手。我该怎么做呢
我正在为上述情况寻找解决方案
请在以下任何一个网站上查看
http://www.uploadify.com/demos/
http://www.zamzar.com/
# 1 楼答案
我使用VBSSCcript文件在shell脚本中使用sendkeys。下面是vbs文件中的代码
下面是运行此vbs文件的selenium代码行
# 2 楼答案
有一种更简单的方法可以解决这个问题,正如斯莱纳克所描述的。当你使用英文键盘时,他的解决方案是有效的,否则你将很难“映射”特殊字符的键
您可以使用^{} 将字符串复制到剪贴板,然后粘贴,而不是
robot.keyPress
和robot.keyRelease
每个键# 3 楼答案
使用C#和Selenium这段代码对我来说很有用,注意如果不是本地主机,你需要使用一个参数来替换特定服务器的FindWindow调用中的“localhost”,如果有多个对话框挂起,则跟踪最新打开的对话框,但这应该让你开始:
# 4 楼答案
嘿,那是我从哪儿来的:)
对于Zamzarweb,它应该可以完美地工作。你不能点击元素。只需在其中输入路径。具体来说,这应该是绝对可以的:
在Uploadify网站的情况下,你陷入了困境,因为上传的东西不是^{,而是一个Flash对象。WebDriver没有API允许您使用浏览器对话框(或Flash对象)
所以在你点击Flash元素后,会弹出一个你无法控制的窗口。在我所知道的浏览器和操作系统中,您几乎可以假设在打开窗口后,光标位于
File name
输入中。请确保这个假设在你的情况下也是正确的如果没有,您可以尝试通过按Alt+N来跳转到它,至少在Windows上是这样的
如果是,可以使用^{} 类“盲目”地在其中键入路径。在你的情况下,这将是:
这很糟糕,但应该管用。请注意,您可能需要这些:How can I make Robot type a `:`?和Convert String to KeyEvents(另外还有新的、闪亮的^{} ,它做类似的工作,但只能从JDK7获得)
对于Flash,我知道的唯一替代方法(从this discussion)是使用暗技术: