LoginSignup
2
1

More than 1 year has passed since last update.

Macにおける、Puppeteer の文字列削除

Last updated at Posted at 2019-09-18

##環境
パペッターのバージョンは、^1.19.0

##背景
文字列削除したかったら、Cmd + Aして削除しようと思っていたが、
Macだと色々面倒らしいです。「Command」が使えなかったり。

もちろんググりましたが、Macの人は文字列削除とかキーに関しては結構困っているっぽいです。僕も困りました(Command押せない。。。)

色々ググったらこの記事が出てきたのですが、
https://github.com/GoogleChrome/puppeteer/issues/1313

await input.click({ clickCount: 3 }); await page.keyboard.press("Backspace");

クリック三回して削除押せばなんとかなるで?みたいに書いてあったのですが、これは文字列が一行だったらの話で、2行以降あったらすべて削除できなくなります。

対象の文字列が一行なら上記で解決できますが、私の場合は勤怠入力の自動化がしたくて、複数行のコメントの入力をなんどもやり直ししたいので、上記の方法ではできなかった。

ここで、ゴリ押しですが、なんとか考えてみました。

プログラム

page.focusとかpage.click試してみたのですが、なぜかうまく行かなかったので、フォーカスする目的で空の文字列を入力するようにして解決しました。

文字を入力するときに使う「page.type」は追記となるので、入力を始めると最終的にカーソルが一番下に来ることになるので、
Shift+上矢印して複数行選択して、最後にBackSpace押すという
ゴリ押しの解決です。
Windowsとか仮想環境でやればこんな変なことしなくてすむんですけどねぇ。。。

hoge.js
    // テキストボックスにフォーカスする目的で、空の文字列を入力
    await page.type('textarea[name="txt"]', '');
    
    //入力しようよしている時点でカーソルが一番下にあるから
    await page.keyboard.down('Shift');
//—————————————————————————————
    //行数分でループさせるか、めっちゃ増やすか
    await page.keyboard.press('ArrowUp');
    await page.keyboard.press('ArrowUp');
    await page.keyboard.press('ArrowUp');
    await page.keyboard.press('ArrowUp');
//—————————————————————————————
    await page.keyboard.up('Shift');
    await page.keyboard.press("Backspace"); 

上記の処理、文字列の行数を取得してその分ループさせてもいいかもですね。

結果

ふぅ〜!消えた!

感想

このモジュール、1番好き。
自動で操作できるの楽しい

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1