在我的量角器端到端测试中,我试图从注册电子邮件中提取URL,但在尝试解析较大的字符串时出错。
我得到的错误是:
**
失败: 1)MockMock获取验证链接消息:失败: regText.indexOf不是一个函数堆栈:类型错误: regText.indexOf不是一个函数在getRegLink(D:\QA\脚本\ProtractorHelloWorld\CCSpecMockMock.js:19: 27)在用户上下文。(D:\QA\脚本\ProtractorHelloWorld\CCSpecMockMock.js:37: 14)在C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\jasminewd2\index.js:112: 25在新的ManagedPromise(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise.js:1077: 7)在ControlFlow.promise(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise.js:2505: 12)在调度器执行(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\jasminewd2\index.js:95: 18)在TaskQueue.execute_(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise.js:3084: 14)在TaskQueue.executeNext_(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise.js:3067: 27)在asyncRun(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise.js:2974: 25)在C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise.js:668: 7来自:任务:运行它(“获取验证链接”)在UserContext的控制流中。(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\jasminewd2\index.js:94: 19)在C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\jasminewd2\index.js:64: 48在ControlFlow.emit(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDriver\lib\events.js:62: 21)在ControlFlow.shutdown_(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDriver\lib\promise. js: 2674:10)shutdownTask_。微任务(C:\用户\dCoughler\AppData\漫游\npm\node_modules\量角器\node_modules\selenium-webDrive\lib\promise. js: 2599:53)来自异步html" target="_blank">测试:套件出错。(D:\QA\脚本\ProtractorHelloWorld\CCSpecMockMock. js: 35:1)在Object.(D:\QA\脚本\ProtractorHelloWorld\CCSpecMockMock. js: 2:1)在模块。_compile(内部/模块/cjs/加载器. js: 688:30)在对象。模块。_extensions... js(内部/模块/cjs/loader. js: 699:10)at Module. load(内部/模块/cjs/loader. js: 598:32)at try ModuleLoad(内部/模块/cjs/loader. js: 537:12)1个规格,1个故障在0.622秒内完成
**
代码如下:
// spec.js
describe('MockMock', function() {
var tRegMessage = element(by.className('well'));
var tabledata = $$('./table');
// get rows
var rows = tabledata.all(by.tagName("tr"));
// get cell values
var cells = rows.all(by.tagName("td"));
var commonfunctions = require('./CCCommonFunctions.js');
function clickRegistration(email) {
element(by.xpath("//td[. = '" + email + "']/following-sibling::td/a")).click();
}
function getRegLink(regText) {
var startUrl = regText.indexOf("http://");
var endUrl = regText.indexOf("Thank you",startUrl);
getRegLink = regText.substring(startUrl,endUrl);
}
function Login(username, password) {
fUserName.sendKeys(username);
fPassword.sendKeys(password);
commonfunctions.ccClick(bLoginButton);
}
beforeEach(function() {
browser.waitForAngularEnabled(false);
browser.get('http://ns-rd-app-wi:2525/');
});
it('Get verification link', function() {
clickRegistration('PhillipPies@mock.com');
browser.get(getRegLink(tRegMessage));
browser.pause();
});
});
我应该如何在量角器中解析字符串?看来我太习惯vbscript了。
==================================================================
我已经根据下面的评论进行了更改,但我仍然被卡住了:
describe('MockMock', function() {
var tRegMessage = element(by.className('well'));
var tabledata = $$('./table');
// get rows
var rows = tabledata.all(by.tagName("tr"));
// get cell values
var cells = rows.all(by.tagName("td"));
var commonfunctions = require('./CCCommonFunctions.js');
function clickRegistration(email) {
element(by.xpath("//td[. = '" + email + "']/following-sibling::td/a")).click();
}
function getRegLink(regMessage) {
return new Promise(resolve => {
regMessage.getText().then(text => {
var startUrl = text.indexOf("http://");
var endUrl = text.indexOf("Thank you",startUrl);
resolve(text.substring(startUrl,endUrl-2))
} )
})
}
beforeEach(function() {
browser.waitForAngularEnabled(false);
browser.get('http://ns-rd-app-wi:2525/');
});
it('Get verification link', function() {
clickRegistration('PhillipPies@mock.com');
var regURL=getRegLink(tRegMessage.getText());
browser.get(regURL.toString());
browser.pause();
});
});
这现在给出了一个新错误:失败:未知错误:未处理的检查器错误:{“代码”:-32000,“消息”:“无法导航到无效URL”}(会话信息:chrome=71.0.3578.98)(驱动程序信息:chromedriver=2.46.628402(536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),平台=Windows NT 10.0。16299 x86_64)
问题是tRegMessage
不是字符串。这是一个ElementFinder
。您需要先调用getText()
。
function getRegLink(regMessage) {
return new Promise(resolve => {
regMessage.getText().then(text => {
var startUrl = text.indexOf("http://");
var endUrl = text.indexOf("Thank you",startUrl);
resolve(text.substring(startUrl,endUrl));
}
}
}
您在线上遇到错误:
browser.get(getRegLink(tRegMessage));
因为tRegMessage
不是字符串
。它是ElementFinder
(您从这一行元素(by.className('well'))获得的;
)所以,您需要从这个元素中获取文本。例如:
it('Get verification link', function() {
const url = tRegMessage.getText();
clickRegistration('PhillipPies@mock.com');
browser.get(getRegLink(url));
browser.pause();
});
另外,您的方法getRegLink()
不会返回string
。因此,在第一次修复之后,您将得到一个错误,该错误将浏览器。get()
应该有参数字符串
问题内容: 使用像leveinstein(leveinstein或difflib)之类的算法,很容易找到近似匹配。 可以通过根据需要确定阈值来检测模糊匹配。 当前要求:基于较大字符串中的阈值来查找模糊子字符串。 例如。 一种蛮力解决方案是生成长度为N-1到N + 1(或其他匹配长度)的所有子串,其中N是query_string的长度,并在它们上逐个使用levenstein并查看阈值。 在pytho
问题内容: 我需要在一个很大的文本文件中搜索特定的字符串。它的构建日志包含大约5000行文本。最好的方法是什么?使用正则表达式应该不会引起任何问题吗?我将继续阅读几行,并使用简单的查找。 问题答案: 如果它是“相当大”的文件,请顺序访问各行,而不要将整个文件读入内存:
本文向大家介绍如何在JSP中检查指定子字符串的字符串中的索引?,包括了如何在JSP中检查指定子字符串的字符串中的索引?的使用技巧和注意事项,需要的朋友参考一下 的FN:的indexOf()函数返回指定的子串中的索引。 语法 该FN:的indexOf()函数的语法如下- 示例 以下是解释fn:indexOf()函数功能的示例- 您将收到以下结果-
问题内容: 我曾经在JavaScript中这样做: Swift没有此功能,如何做类似的事情? 问题答案: 编辑/更新: Xcode 11•Swift 5.1或更高版本 用法: 不区分大小写的样本 正则表达式样本
问题内容: 在我的查询中,我想找到与许多LIKE运算符之一匹配的行。我知道这样做的3种方法,但是只有其中一种可以使用索引。 让我们从表开始: 插入样本数据后,我可以执行以下操作: 以上查询正确使用索引。 第二种方式: 该查询将不使用索引。我知道的最后一种方法: 与上一个查询类似,该查询将不使用索引。 这是SQL Fiddle,适用于那些想如何使用这些查询的人:http : //sqlfiddl
问题内容: 我有mysql表,其中有一列将xml存储为字符串。我需要找到xml列包含给定6个字符的字符串的所有元组。没关系-我只需要知道这6个字符串是否存在即可。 因此,将文本格式设置为xml可能并不重要。 问题:如何在mysql中搜索?即 有没有一种方法可以使用LIKE运算符执行此操作? 问题答案: 您可能可以使用该子句进行一些简单的字符串匹配: 如果您需要更多高级功能,请在此处查看MySQL的