【问题标题】:Execute an external .js file using selenium webdriver使用 selenium webdriver 执行外部 .js 文件
【发布时间】:2016-06-09 15:31:23
【问题描述】:

我们如何使用 java selenium 执行使用 selenium webdriver 文件的外部 .js 文件。我得到了一些参考“Call external javascript functions from java code”,但是调用函数能够接受该文件中的函数。我只想将整个文件作为一个整体执行。

【问题讨论】:

  • 当我们在 cmd 提示符下运行命令时需要这样做,例如“node file.js”
  • 你在哪里用这个,appium??

标签: javascript selenium-webdriver


【解决方案1】:

从您的服务器到客户端运行外部 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 到页面中以供其他脚本等进行交互(即,而不是一次性执行) ,见this question

【讨论】:

    【解决方案2】:

    下面是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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 2016-01-17
      相关资源
      最近更新 更多