使用Selenium WebDriver执行外部的.js文件

4
我们如何在使用Java Selenium的过程中执行外部的.js文件?我找到了一些参考资料“从Java代码调用外部JavaScript函数”,然而invoke function只能接受该文件内的函数。我想要执行整个文件。

需要在命令提示符窗口中运行命令,例如"node file.js"。 - imdevjyoti
你在哪里使用这个,Appium? - Pankaj Kumar Katiyar
2个回答

3

只需按照以下步骤即可在客户端上运行来自服务器的外部JavaScript:

// Assume Guava, but whatever you use to load files...
String externalJS = Files.toString( new File("external.js"), Charset.forName("utf-8"));

// Execute, assume no arguments, and no value to return
Object ignore = ((JavascriptExecutor) driver).executeScript(externalJS);

您提供的链接并不有用,因为它是关于在Java虚拟机中执行JavaScript而不是在浏览器/设备客户端上执行的。
如果您感兴趣的不是执行,而是将JavaScript注入页面以供其他脚本等与之交互(即不是一次性执行),请参见this question

2
这里是NodeJS调用外部JS并执行其中一个函数的代码:

var fs = require('fs');
var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;

 var driver = new webdriver.Builder()
.forBrowser('phantomjs')
.build();

var axeSource = fs.readFileSync('lib/axe.js', 'utf8');

driver
    .get('http://www.google.com/ncr')       
driver.executeScript(axeSource)
    .then(function(){
        driver.switchTo().defaultContent();
         driver.executeAsyncScript(function() {
           var callback = arguments[arguments.length - 1];
            window.axe.a11yCheck(document, null, function (results) {
                callback(results);
            });

         }).then(function(str) {
                var viola = processResults(str);
                console.log(viola);
            });
    })


driver.quit();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接