首页 > 解决方案 > 空手道 UI 框架:必须运行 javascript 来存储 chrome 会话以启动网站

问题描述

我正在尝试使用空手道框架启动我的应用程序 url。问题是,此门户网站没有任何登录用户名/密码功能。该网站使用与特定机器的 deviceid 和浏览器会话关联的令牌。当我们手动测试它时,我们必须确保我们在同一个浏览器上使用相同的 url,并且永远不应该清除缓存,否则这个 url 令牌会过期。

现在,我们必须自动化它,我们找到了一个使用 selenium webdriver 和 java/javascript 运行的脚本,以使用设备 ID 恢复会话。

但是,我现在正在尝试获得空手道框架的解决方案。

有人可以指导我。

请在下面找到空手道功能文件和代码。

 var request = indexedDB.open("ZZ");
var db;
request.onupgradeneeded = function() {
  // The database did not previously exist, so create object stores and indexes.
  db = request.result;
  var store = db.createObjectStore("XX");
};

request.onsuccess = function() {
  db = request.result;
  var tx = db.transaction("XX", "readwrite");
  var store = tx.objectStore("XX");
  store.put("`+deviceId+`");
};

功能文件:

Feature: to test login flow
Scenario:
Given driver 'https://www.testing.com'
And param deviceid = qqqqqq
* def precondScript = Function(){
''
  var request = indexedDB.open("ZZ");
    var db;
    request.onupgradeneeded = function() {
      // The database did not previously exist, so create object stores and indexes.
      db = request.result;
      var store = db.createObjectStore("XX");
    };
    
    request.onsuccess = function() {
      db = request.result;
      var tx = db.transaction("XX", "readwrite");
      var store = tx.objectStore("XX");
      store.put("`+deviceId+`");
    };

''
Given driver 'https://www.testing.com'
When searchbox <element locator>
Then comparison

现在这就是我们在 selenium 和 cucumber BDD 代码中的做法。

driver.get(https://www.testing.com);
String deviceId = qqqqqq  
jsHelper.executeScript("var request = indexedDB.open("ZZ");\n" +
                    "var db;\n" +
                    "request.onupgradeneeded = function() {\n" +
                    "// The database did not previously exist, so create object stores and indexes.\n" +
                    "db = request.result;\n" +
                    "var store = db.createObjectStore(\"XX\");\n" +
                    "};\n" +
                    "\n" +
                    "\n" +
                    "\n" +
                    "request.onsuccess = function() {\n" +
                    "db = request.result;\n" +
                    "var tx = db.transaction(\"XX\", \"readwrite\");\n" +
                    "var store = tx.objectStore(\"XX\");\n" +
                    "store.put(\"" + deviceId + "\", \"AAA");\n" +
                    "};");
  
 driver.get(https://www.testing.com);
driver.manage().window().maximize();
 log.info("navigating to homepage"); 

标签: javascriptautomated-testskaratebrowser-automation

解决方案


推荐阅读