我是一个javascript/java开发人员,我一直在试图弄清楚selenium webdriver自动化框架如何从文件系统上传文件.无法通过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();
Run Code Online (Sandbox Code Playgroud)
所以他们通过发送密钥来设置价值?我不明白.我查看了此处的源代码:http: //code.google.com/p/selenium/source/checkout 我仍然无法找到他们这样做的地方.
编辑:我的问题不是如何用selenium做这个,但是硒开发人员是如何做到这一点的呢?他们是如何解决javascript中的安全限制的?他们如何上传文件?
selenium automation webdriver browser-automation selenium-chromedriver
我的数据库表是这样的(数据是 JSONB 列):
id | data
----+--------------------------------------
1 | {"tags": [{"name": "tag1"}, {"name": "tag2"}]}
2 | {"tags": [{"name": "tag2"}]}
3 | {"tags": [{"name": "tag3"}]}
4 | {"tags": [{"name": "tag4"}]}
Run Code Online (Sandbox Code Playgroud)
我想编写一个查询,该查询将返回data包含标签tag2或 的行tag3。因此应返回第 1、2 和 3 行。我一直在查看 postgresql JSONB 文档,但我不清楚如何查询这样的嵌套结构。我该如何编写 where 子句?
我有使用chrome和selenium 2 webdriver的问题.问题是当我使用chromedriver启动浏览器会话时,它总是在一个小于可用屏幕宽度一半大小的窗口中启动.因为我正在对屏幕大小发生变化的页面进行测试,所以我的测试失败了,因为我试图从页面顶部拖动一个元素并将其放到页面底部的元素中.我得到一个滚动错误.但如果窗口最大化,那么我不会得到这个错误.但问题是,每次chrome通过chrome驱动程序启动一个新会话时,它总是在一个小窗口中启动.我已经探索了许多不同的选项来让浏览器开始最大化:
当我尝试:driver.manage().window().setSize()我得到这个异常:
INFO: Executing: [93debf43cf70ad3557442a7e1aee4620, setWindowSize {"windowHandle":"current","width":2560,"height":1440}]
org.openqa.selenium.UnsupportedCommandException: [GET, HEAD, DELETE]
Command duration or timeout: 16 milliseconds
Build info: version: '2.15.0', revision: '15105', time: '2011-12-08 09:56:25'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.7.2', java.version: '1.6.0_29'
Driver info: driver.version: RemoteWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:147)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:113)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:424)
at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions$RemoteWindow.setSize(RemoteWebDriver.java:578)
at com.domo.automation.framework.utility.WebDriverUtil.startWebDriver(WebDriverUtil.java:36)
at com.domo.automation.tests.DomoWebDriverTestCase.setUp(DomoWebDriverTestCase.java:45)
at junit.framework.TestCase.runBare(TestCase.java:132)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113) …Run Code Online (Sandbox Code Playgroud)我们目前正在建立一个项目,并有4个团队在其中的不同部分工作.我想要运行5个蚂蚁目标.每个团队一个,另外一个用于生产.但是我想在我的测试中设置一个枚举来确定运行哪些测试.
例如,如果测试有.
runConfiguration = RunConfigurations.PRODUCTION;
Run Code Online (Sandbox Code Playgroud)
然后我会运行它只运行特定的蚂蚁目标.如果我这样做,其他测试将运行:
runConfiguration = RunConfigurations.TEAM1;
Run Code Online (Sandbox Code Playgroud)
等等
是否有可能在ant中创建一个batchtest来仅运行具有这样的特定枚举值的测试?或者是否有另一种方法可以达到同样的目的?
我正在使用nodejs来编写图像上传服务.支付客户端将能够将图像文件发送到我在我的服务器上设置的端点.但是,当每个请求进入时,我需要确认它实际上是一个付费客户提出请求.我想让客户端给我他们的域名,我只会检查referer标题.但是,有人可以轻松欺骗引用标题并使用我的服务而无需付费.SaaS开发人员如何面对这一技术问题?是否可以解决这个问题而不需要我的客户端有一些服务器端代码?
我在亚马逊 AWS 上使用过服务器,他们向我发送了一个公钥 .pem 文件,当我 ssh 进入时,我所要做的就是:
ssh -i key.pem user@server
Run Code Online (Sandbox Code Playgroud)
我现在有一个自己的服务器,并试图弄清楚如何使用我的服务器来做到这一点,以便我可以通过 ssh 自动向我的服务器发送命令。
我想我需要在我的服务器上生成这个密钥并将它复制到我的客户端机器上。如何生成此密钥?
在这个例子中:
var canvas = document.getElementById("testCanvas");
var stage = new createjs.Stage(canvas);
function drawRectangle(){
var rect = new createjs.Shape();
rect.graphics.beginFill("#000").drawRect(10, 10, 100, 100);
stage.addChild(rect);
}
function drawShapes(){
drawRectangle();
stage.update();
}
drawShapes();
// Why does this call log null?
console.log(stage.getBounds());Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/EaselJS/0.8.0/easeljs.min.js"></script>
<canvas id="testCanvas" width="600" height="150"></canvas>Run Code Online (Sandbox Code Playgroud)
stage.getBounds();正在返回空值。为什么它返回null?根据docs,它应该返回一个表示舞台边界框尺寸的矩形对象。
如果这种用法不正确,那么获取对象尺寸的正确用法是什么?
java ×2
selenium ×2
webdriver ×2
ant ×1
automation ×1
createjs ×1
cross-domain ×1
easeljs ×1
http ×1
javascript ×1
jsonb ×1
junit ×1
key ×1
node.js ×1
postgresql ×1
ssh ×1
ssh-keys ×1