在puphpeteer ^2.0中如何使用类似Puppeteer的page.select()选择下拉框
Puphpeteer 原生封装了 JS 版的 page.select 方法,你可以直接调用,不用手动模拟点击下拉框和选项的操作。另外你的原代码执行失败大概率是没有等待页面动态加载的 DataTables 元素渲染完成就执行了操作。
修改后的可运行代码如下:
<?php require_once '../vendor/autoload.php'; use Nesk\Puphpeteer\Puppeteer; use Nesk\Rialto\Data\JsFunction; $debug = true; $puppeteer = new Puppeteer([ 'read_timeout' => 100, 'debug' => $debug, ]); $browser = $puppeteer->launch([ 'headless' => !$debug, 'ignoreHTTPSErrors' => true, ]); $page = $browser->newPage(); $page->goto('https://www.psacard.com/auctionprices#0%7Cpokemon'); // 先等待下拉框元素渲染完成 $page->waitForSelector('#DataTables_Table_0_length select'); // 直接调用select方法,第二个参数填你要选中的option的value属性值 // 比如默认第二个选项值为25,要选其他值直接替换即可 $page->select('#DataTables_Table_0_length select', '25'); // 后续其他操作... $browser->close();
注意点:
select方法的第二个参数要和目标option标签的value属性完全匹配,而不是选项的显示文本,如果你要选对应选项,先确认对应option的value值再传参即可。- 该方法会自动触发下拉框的
change事件,和用户手动选择的效果完全一致,不需要额外处理事件监听。
内容的提问来源于stack exchange,提问作者Carol.Kar
相关产品推荐
相关产品推荐

