如果一次点击未提交表单,如何再次点击?

时间:2018-03-28 13:30:12

标签: javascript node.js puppeteer

在木偶戏中,我正在尝试提交表格,在填写基本详细信息后,我点击提交按钮大部分时间这已经足够但有时这不起作用我必须再次点击按钮继续下一页。有什么方法可以在我的程序中实现这个吗?

我认为这可能是通过在点击后等待事件来实现的,如果没有发生该事件,则再次启动点击,但我不知道哪个甚至等待。我很抱歉这可能是一个noob问题,但我是JavaScript的新手,所以我对这些事件了解不多。

await this.page.goto('https://www.urlwithform.com', {waitUntil: 'load'});
await genericParser.enterDetailsLabel(this.page,this.customerDetails);
await this.page.type('#txtCountry', this.depCity);
await this.page.evaluate((depCity) => {
var citySuggestions = document.querySelectorAll('div.autocomplete-suggestion');
    var newDepCity = depCity.toUpperCase();
    var cityRegex = new RegExp(newDepCity);
    citySuggestions.forEach((city) => {
    if(city.textContent.match(cityRegex)) {
        city.click();
    }
});
},this.depCity);
await this.page.waitFor(1000);
await this.page.waitFor('button');    
await this.page.click('#MainBody_IWOVID_item_1_btnCheckIn');

enterDetailsLabel输入表单详细信息,page.evaluate中的代码更多地是特定于在表单中选择城市的代码。

2 个答案:

答案 0 :(得分:0)

一般来说,您应该等待submit event。甚至可能更好地解决这个事件并采取行动回调。确保在表单元素上而不是在输入上触发它。请注意无效事件(也许你应该对此进行单独的否定测试)

答案 1 :(得分:0)

只有在将数据输入到适当的表单字段后才能启用提交按钮吗?如果您遇到这种情况我可以建议使用

await page.click("button[type*='submit']", {delay: 1000});