gpt4 book ai didi

javascript - puppeteer - 如何提交表单

转载 作者:行者123 更新时间:2023-12-03 07:03:01 25 4
gpt4 key购买 nike

我如何提交表格?
我有一个简单的搜索栏和一个搜索按钮。以下输入搜索字符串,但不触发单击事件。当 headless 设置为 false 并且我在 serachfield 中手动单击 Enter 时,搜索正在工作。如何提交按钮?

  const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.goto('http://localhost:3000', {waitUntil: 'networkidle'});

await page.focus('#search');

// Type our query into the search bar
await page.type('michael');

// Submit form
await page.press('Enter');

await page.screenshot({path: './screenshots/search3.png'});

browser.close();
})();

我的搜索栏
search(e) {
e.preventDefault();
this.props.onClick(this.props.value);}

render() {
return (<form className="form-inline" id="search-form" onSubmit
{this.search}>
<div className="form-group">
<input
type="text"
className="form-control"
id="search"
value={this.props.value}
placeholder={this.props.placeHolder}
onChange={this.props.onChange}
/>

<button primary type="submit" >
{this.props.buttonText}
</button>
</div>
</form>);
}

更新

这不起作用:
const searchForm = await page.$('#search-form'); 
await searchForm.evaluate(searchForm => searchForm.submit());

它执行回发并清除表单中的文本,即使它应该使用 preventDefault 触发函数。

所以问题似乎是这行代码等待
searchForm.evaluate(searchForm => searchForm.submit());

这是有效的:

我将代码更改为:
await page.click('#search-button'); 
await page.waitForNavigation();

最佳答案

我通过使用它而不是提交表单来解决它:

await page.click('#search-button'); 
await page.waitForNavigation();

关于javascript - puppeteer - 如何提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46191367/

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