web-dev-qa-db-ja.com

TypeError:nullのプロパティ 'click'を読み取れません

これらのコードを使ってTwitterで大量フォロー/アンフォロー/フェイバリット/フェイバリットを解除しました;

$('button.follow-button').click();
$('button.ProfileTweet-actionButtonUndo').click();
$('a.favorite').click();

動作していないコードをオンラインで見つけて修正しようとしたので、今はほとんど機能しています。唯一のことは、Google Chromeのページに移動し、f12を押してコンソールを開き、コマンドを実行することです。

だから今、私はVineで同じシステムを使いたかった。 Googleの拡張機能がありますchrome Vineを使用する( https://client.vineclient.com/ )。元のWebページ( Vine.co)は役に立ちません。

Twitterとこれとの唯一の違いは、^ followers ^セクションのVineクライアントでは、ページにポップアップが表示されることです。そして、ボタンを検出するかどうかはわかりません。

だから、元のページからクリックしようとしているボタンのコード、(開発者ツール/要素を使用してそれを取りました)

<div class="user">
<img alt="Tuğçe Nur TEKİN" class="avatar" src="http://v.cdn.Vine.co/r/avatars/3C2E4F40F11066473630650847232_pic-r-1397241239141e51579937f.jpg.jpg?versionId=ttIz4CExCjW_4TEnxYbnehPPpXRyzMco">
<div class="wrapper">
<a class="username" 
href="https://client.vineclient.com/explore/users/1066473613911363584">
Tuğçe Nur TEKİN
</a>
</div>
<a class="button follow" data-id="1066473613911363584">
<i class="icon">
</i>
</a>
</div>

クリックするものはこちらです:

手動でクリックすると、次のように変わります。

<a class="button unfollow" data-id="1066473613911363584"><i class="icon"></i></a>

そして、クリックしようとするために使用するコマンド

$(".a.follow").click();

私が得るエラー、

TypeError: Cannot read property 'click' of null

どうすれば修正できますか?ちなみに、これらのコードでは、^ button ^コードは実際には見つかりませんでした。ありがとう!

更新

  1. http:// prntscr。 com/3pmo2i
  2. http:// prntscr。 com/3pmoyk
  3. http:// prntscr。 com/3pmpym
10
Berque Cemilian

開発者ツールを同時に使用しているときに、他の場所(Seleniumなど)からWebページでjavascriptを実行すると、この問題が発生しました。開発者ツールを閉じて、スクリプトを実行してください。

21
premganz

JQueryライブラリーを使用するには、ライブラリーがページにロードされていることを確認する必要があります。 @adeneoが述べたように、jQueryはnull値を返しません。つまり、$変数はjQueryではないオブジェクトへの参照を保持しています。 jQueryがページにロードされていることを確認するには、chromeデバッガーにtypeof jQueryと入力します。jQueryがページにロードされると、コンソールは「関数」を出力します。 。ページにjQueryを追加する手順は、 here にあります。

JQueryがページに適切にロードされていることを確認したら、目的の要素にアクセスするために使用しているCSSセレクターを修正する必要があります。

$(".a.follow")は、「クラス「a」と「follow」の両方を持つすべての要素を選択する」ことを意味します。

<div class = "a follow"> </ div>

代わりに、セレクタは$("a.follow")である必要があります。これは、「 'follow'クラスを持つすべての 'a'タイプの要素を選択する」ことを意味します。

<a class="follow"> </a>
3
tommyTheHitMan

私の場合、解決策は、ブラウザー内で単純にelement-inspectorをオフにするにすることでした! :)

1
FranBran

私の場合、jqueryと別のライブラリの間に競合があったため、メインスクリプトを呼び出す前に、スクリプトにjQuery.noConflict();を実装する必要がありました。

Jqueryの競合について詳しく読むことができます here

0
The Dead Guy