我是一名javascript / java开发人员,我一直在尝试弄清楚seleniumwebdriver自动化框架如何从文件系统上载文件。无法设置通过javascript输入的文件,因为它违反了安全性。但是,webdriver可以通过以下命令执行此操作:
driver.setFileDetector(new LocalFileDetector()); WebElement upload = driver.findElement(By.id("myfile")); upload.sendKeys("/Users/sso/the/local/path/to/darkbulb.jpg"); driver.findElement(By.id("submit")).click();
因此,他们通过发送密钥来设置值吗?我不明白 我浏览了以下源代码:http : //code.google.com/p/selenium/source/checkout 我仍然找不到他们在哪里执行此操作。
编辑:我的问题不是如何用selenium来做到这一点,但是selenium开发人员如何做到这一点呢?他们如何解决javascript中的安全性限制?他们如何上传文件?
好友问题…他们已经编写了HTTP代理来解决Javascript安全性限制。使用此代理可以避免“同一主机来源”策略的许多约束,在这些约束中,浏览器不允许Javascript调用除提供当前页面的服务器以外的任何对象。
而且,WebDriver使用在OS级别触发事件的替代方法。由于这些“本机事件”不是由浏览器生成的,因此该方法规避了对合成事件的安全限制,并且由于它们是特定于操作系统的,因此一旦它们在特定平台上为一个浏览器工作,则在另一个浏览器中重用代码是相对的简单。
上面的大部分内容都从下面引用。.do请阅读以下参考资料,以获取有关硒内部的更多详细信息
http://www.aosabook.org/en/selenium.html