如何提交表格?我有一个简单的搜索栏和一个搜索按钮。以下输入搜索字符串,但不会触发click事件。当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();
})();
Run Code Online (Sandbox Code Playgroud)
我的搜寻列
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>);
}
Run Code Online (Sandbox Code Playgroud)
更新
这不起作用: …
我在使用最新版本的puppeteer时遇到了一些麻烦。
我正在使用puppeteer版本0.13.0。
我有一个包含此元素的网站:
<div class="header">hey there</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行以下代码:
const headerHandle = await page.evaluateHandle(() => {
const element = document.getElementsByClassName('header');
return element;
});
Run Code Online (Sandbox Code Playgroud)
现在,headerHandle是带有描述的JSHandle:“ HTMLCollection(0)”。
如果我尝试运行
headerHandle.getProperties()并尝试console.log,我会得到Promise { <pending> }。
如果我只是尝试获得这样的元素:
const result = await page.evaluate(() => {
const element = document.getElementsByClassName('header');
return Promise.resolve(element);
});
Run Code Online (Sandbox Code Playgroud)
我得到一个空物体。
如何获得实际元素或元素的值?