我想使用Java将JavaScript与WebDriver(Selenium 2)一起使用。
我遵循了一些指南,第一行有一条指令以如下方式运行:
$ ./go webdriverjs
我的问题:上述命令将从哪个文件夹/位置运行/执行?
基于您先前的问题,我想您想从Java的Java运行JavaScript代码段WebDriver。如果我错了,请纠正我。
WebDriver
该WebDriverJs实际上是“公正”另一WebDriver语言绑定(您可以用Java编写,C#,红宝石,Python和JS甚至可能更多的语言,截至目前你的测试)。特别是JavaScript,它使您可以用JavaScript编写测试。
WebDriverJs
如果要在Java中运行JavaScript代码WebDriver,请执行以下操作:
WebDriver driver = new AnyDriverYouWant(); if (driver instanceof JavascriptExecutor) { ((JavascriptExecutor)driver).executeScript("yourScript();"); } else { throw new IllegalStateException("This driver does not support JavaScript!"); }
我也喜欢这样做:
WebDriver driver = new AnyDriverYouWant(); JavascriptExecutor js; if (driver instanceof JavascriptExecutor) { js = (JavascriptExecutor)driver; } // else throw... // later on... js.executeScript("return document.getElementById('someId');");
您可以在文档中,或者最好在的JavaDocs中JavascriptExecutor找到与此有关的更多文档。
JavascriptExecutor
在executeScript()需要函数调用和原材料JS了。您可以从中获得return一个值,并且可以向其传递许多复杂的参数,例如一些随机示例:
executeScript()
return
// returns the right WebElement // it's the same as driver.findElement(By.id("someId")) js.executeScript("return document.getElementById('someId');");
// draws a border around WebElement WebElement element = driver.findElement(By.anything("tada")); js.executeScript("arguments[0].style.border='3px solid red'", element);
// changes all input elements on the page to radio buttons js.executeScript( "var inputs = document.getElementsByTagName('input');" + "for(var i = 0; i < inputs.length; i++) { " + " inputs[i].type = 'radio';" + "}" );