使用 selenium webdriver 执行外部.js文件

Execute an external .js file using selenium webdriver

本文关键字:js 文件 外部 执行 selenium webdriver 使用      更新时间:2023-09-26

我们如何使用 Java Selenium 使用 Selenium webdriver 文件执行外部.js文件。我得到了一些参考"从java代码调用外部javascript函数",但是invoke函数能够接受该文件中的函数。我只想将整个文件作为一个整体执行。

服务器在客户端上运行外部 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 VM 内)而不是在浏览器/设备客户端上执行 JavaScript。

如果您有兴趣将 JavaScript 注入页面以供其他脚本等进行交互(即而不是一次性执行),而不是执行,请参阅此问题。

以下是nodeJS调用外部JS并在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();