gpt4 book ai didi

html - Zombie.js 按钮未启用

转载 作者:行者123 更新时间:2023-11-28 20:31:57 26 4
gpt4 key购买 nike

目前我正在尝试使用 zombie.js 为我的网站运行自动化测试。现在我正在努力使一个人注册自动化。对于注册,表单使用了 3 个不同的 div,如下所示

页面代码:

<form>
<div id=step1>
<div id=step2>
<div id=step3>
</form>
...
...
<button id="nextStep" class="btn btn-primary" role="button"
onClick="signupNext()">Cnt. </button>

SignupNext 是一个 javascript 函数,它禁用按钮然后做一些简单的事情然后重新启用该按钮。

zombie 代码:

browser
.visit(https://example.com, function(){
browser.fill(....)
browser.fill(....)
browser.pressButton('#nextStep', function(){
browser.fill(...)
browser.fill(...)
browser.pressButton('#nextStep', function(){ //THIS LINE Errors
...
...
});
});
})

Zombie 在第二个 .pressButton 上抛出错误“Button is disabled”。就我对 zombiejs 的理解而言,在我看来 pressButton 应该等待事件完成然后执行回调函数。

* zombie 新手

最佳答案

一切都是异步发生的来自文档:

The browser will load the document and if the document includes any scripts, also load and execute these scripts. It will then process some events, for example, anything your scripts do on page load. All of that, just like a real browser, happens asynchronously.

要等待页面完全加载和处理事件,你通过访问 一个回调函数。 Zombie 然后会用 null 调用你的回调, 浏览器对象、最后响应的状态码和一个数组 错误(希望是空的)。这是 JavaScript,所以你不需要 声明所有这些参数,实际上可以访问它们 browser.statusCode 和 browser.errors.

(为什么第一个回调参数为 null?当 使用像 Mocha 这样的异步测试框架

zombie 也支持 promise 。当您调用访问功能时, wait 或 clickLink 没有回调,你会得到一个 promise 。之后 浏览器完成处理,它要么履行要么拒绝 promise 。

例如:

browser.visit("http://localhost:3000/").
then(function() {
assert.equal(browser.text("H1"), "Deferred zombies");
}).
fail(function(error) {
console.log("Oops", error);
});

关于html - Zombie.js 按钮未启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17549393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com