selenium webdriver 调用js传参
首先,我们使用如下方式初始化driver:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
1.直接传入JavaScript代码
可以直接给jse传入javascript代码:
jse.executeScript("window.document.getElementById('jingshou').click()";
2.传入WebElement执行JS:
WebElement element = driver.findElement(By.id("jingshou"));
jse.executeScript("arguments[0].click();", element);
又或者:
jse.executeScript("arguments[0].onclick=function(){alert('This is my alert!');}", element)
其中auguments[0]就代表element, 甚至我们可以传入更多的参数,比如
WebElement div = driver.findElemnt(By.id("myDiv"));
jse.executeScript("arguments[0].setAttribute('style', arguments[1])", div, "height: 1000px");
通过执行以上代码,我们指定的DIV就新增(修改)了 style {height: 1000px}的属性
3.使用JQuery:
// 如果没有jQuery 注入jQuery
private void exejQuery(String js) {
try {
Thread.sleep(1000L * 3);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
jse = (JavascriptExecutor) driver;
try {
jse.executeScript(js);
} catch (WebDriverException e) {
jse.executeScript("var headID=document.getElementsByTagName(\"head\")[0];var newScript = document.createElement('script');newScript.type = 'text/javascript';newScript.src ='https://code.jquery.com/jquery-3.2.1.min.js';headID.appendChild(newScript);");
try {
Thread.sleep(1000L * 10);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
jse.executeScript(js);
}
}
调用
exejQuery("$(\".btn-common\").click()");
赞(1)
赏