0

我有一个 basic_function.js 脚本文件,其中包含一些验证和常用操作。就像我说的下面是验证部分(示例)

exports.validation = function (casper) {
return casper
.then(function () {
    this.exists('1st Element ID',"Log Out button exist");
    this.exists('2nd Element ID', "Shareable link exists");
    });
};

只需调用即可在每个脚本中使用

functions.validation (casper);

当我开始执行测试套件(包含大约 10-12 个测试脚本)时,有时第一个脚本通过验证部分通过,而一些脚本在验证部分失败,并在日志中打印

找不到可共享链接的匹配元素

并在下一个脚本中通过。我不知道它为什么会这样

4

2 回答 2

0

不是 100% 确定这是否是您所要求的,但我必须在我的 CasperJS 脚本中添加一些等待时间以避免失败。这里有几种方法:

casper.then(function(){
    this.wait(1000, function(){
        test.assertTitle('The Title', 'It all works');
    });
});

或者您可以等待特定元素出现在您的页面上,然后执行您的断言等。

casper.then(function(){
    casper.waitUntilVisible('#someID', function(){
        test.assertTitle('The Title', 'It all works');
    });
});

这是您查看的文档

于 2015-09-09T15:53:22.757 回答
-1

一些代码可能有助于使问题更清晰。但是如果您正在运行一堆测试并且在所述测试之间更改您正在测试的东西,那么您可能需要在更改选项后等待。为了更清楚,我将提供一个我想说的例子。我用 casper 做了很多网站测试,所以这是我最好的猜测,如果我编写一个打开主页的测试,可能会发生什么(在某种程度上)。在搜索栏中输入某些内容,然后立即在结果页面上测试某些内容。它会出错,因为显然有加载时间从页面切换到页面,并且您无法在不等待一两秒的情况下测试结果页面。所以通常我使用 casper.waitForSelector() 但在您的情况下,您可能只需要一个 casper.wait() ,您可以在其中硬编码您认为足够的时间。

于 2015-08-14T15:55:04.057 回答