作成フィールドが作成されるたびに変更され、ユーザーごとに変更される可能性があるため、送信ボタンのクラスまたは id 属性に依存することはできません。では、ボタンについて何がわかるでしょうか。
- innerHTML は「Send」です (脚注を参照)
- 値が「ボタン」のロール属性があります
- 「新しいメッセージを作成する」コンテナの中にあり、「差出人」、「宛先」などの他のラベルもあります (脚注 2 を参照)。
その情報を使用して、ボタンを取得するネイティブ Javascript で優れた Xpath クエリを使用できます。
var xpath = '//div[@role="button" and text()="Send"]'
var query = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
var button = query.iterateNext();
[role="button"]
ライブラリを jQuery として使用している場合は、前の回答で提供されている css セレクターとフィルター関数を自由に使用してください。
これは、テーブル情報を親として追加することで改善される可能性がありますが、これで十分なはずです (詳細については、Developer Mozilla Introduction to Xpath を参照してください)。うまくいけば、答えは良いパフォーマンスを提供します。
更新: Gmail はいくつかのクラスに固執しているようです (クラスT-I J-J5-Ji
は古いバージョンと新しいバージョンの間で共有されているようです)。それでも、私はそれを使用しません。他の開発者がそのクラスに出くわし、それだけでボタンを取得している場合、特にコメントがなく、変数名が貧弱な場合、あなたが取得しているものを理解する方法はありません使用されている。
実際に回答を取得するソリューションでは、次のような CSS クエリ セレクターを使用しますdiv > div > div > div > table div
。どちらも同じ理由で使いません。さらに、説明が不十分な正規表現を思い出させます。あなたは自分のためにコーディングしているだけでなく、プロジェクトについて何も知らないかもしれない未来のあなた自身にもコーディングしています。
脚注: または、ユーザーの言語に相当するもの。すべてのユーザーが英語の Gmail を使用しているかどうかはわかりませんが、そのような仮定はしません。私があなただったら、「送信」の最も一般的なキーワードのロケールで辞書を作成し、それらのほとんどを繰り返し評価します。繰り返すことができる言語の量は、Gmail がサポートする言語に限定される可能性があります。
脚注 2: 実際には、[作成] を押すと、ラベルの [From] と [To] が追加されますが、すぐに入力しないとラベルが消えて、innerHTML の [Recipients] と [Subject] を含むいくつかの div だけが表示されます。 "