javascript - 空手道 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");
解决方案
推荐阅读
- c# - 确定 SQL Server 数据库的托管位置?无论是在本地机器上还是在云端?
- java - 我无法使用我的 Web 应用程序从列表中删除 Car
- javascript - 根据 Parent Id JavaScript 将对象设为子对象
- aframe - Aframe 中的变色光
- selenium - 无法在 Mocha 框架中单击已保存表单中的元素
- javascript - Bootstrap-vue 延迟加载显示旧图像
- angular - 如何在 ionic 4 中将项目添加到 json 数组
- python-3.x - 连接两个模型特征向量以进行融合
- oracle - Oracle LISTAGG sum count by date and location
- mysql - MySQL - 将列值从一行交换到另一行