Próbuję zautomatyzować poniższy przycisk wpłaty na Facebooku z zapytaniem javascript

Zrzut ekranu z przyciskiem Przekaż darowiznę

document.getElementById('pay_button').click();

Ale problem polega na tym, że otrzymuję odpowiedź jako

Uncaught TypeError: Cannot read property 'click' of null

Co oznacza, że nie ma takiego identyfikatora, ale kod źródłowy Facebooka pokazuje data-testid = "pay_button" . Czy ktoś może mi pomóc, jak zautomatyzować ten przycisk darowizny, może używam niewłaściwego identyfikatora klasy? Próbowałem użyć innej klasy, ale wszystko, co otrzymuję, to null, jak mogę zidentyfikować właściwy identyfikator klasy w tym przypadku?

    <div class="_39ge">
   <div class="_39gi">
      <button data-testid="pay_button" type="button" aria-disabled="false" class="_271k _1qjd _7tvm _7tv2 _7tv4" style="width: 100%; letter-spacing: normal; color: rgb(255, 255, 255); font-size: 12px; font-weight: bold; font-family: Arial, sans-serif; line-height: 34px; text-align: center; background-color: rgb(0, 164, 0); border-color: rgb(0, 164, 0); height: 36px; padding-left: 19px; padding-right: 19px; border-radius: 2px;">
         <div class="_43rl">
            <div data-hover="tooltip" data-tooltip-display="overflow" class="_43rm">
               <div class="_304_ clearfix">
                  <div class="_ohe lfloat">
                     <div class="_2pis">Donate</div>
                  </div>
                  <div class="_ohf rfloat">
                     <div class="_2pii"><span>$55.00</span></div>
                  </div>
               </div>
            </div>
         </div>
      </button>
   </div>
</div>

Zrzut ekranu z FB View Source

-1
aruzmeister 21 listopad 2019, 05:22
1
Witamy w przepełnieniu stosu. Nie widzę żadnych elementów, które mają identyfikator pay_button. Jeśli element nie istnieje, nie będziesz mógł powiązać z nim zdarzenia.
 – 
Twisty
21 listopad 2019, 05:44
Czy mogę traktować data-testid jako identyfikator? Czy jest jakiś sposób, żebym mógł to związać, jeśli nie?
 – 
aruzmeister
21 listopad 2019, 05:55
1
Jaki jest przypadek użycia tego? dlaczego ktoś miałby chcieć to zautomatyzować? również te rzeczy zwykle nie są dozwolone na Facebooku. Praktyczna zasada: jeśli istnieje api, nie jest to dozwolone.
 – 
andyrandy
21 listopad 2019, 08:59
Nie. Atrybut ID jest atrybutem ID. Nie możesz użyć innego atrybutu jako identyfikatora.
 – 
Twisty
21 listopad 2019, 19:09

1 odpowiedź

Możesz wypróbować inny selektor.

$(function() {
  $("[data-testid='pay_button']").click(function() {
    console.log("Button Clicked.");
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="_39ge">
  <div class="_39gi">
    <button data-testid="pay_button" type="button" aria-disabled="false" class="_271k _1qjd _7tvm _7tv2 _7tv4" style="width: 100%; letter-spacing: normal; color: rgb(255, 255, 255); font-size: 12px; font-weight: bold; font-family: Arial, sans-serif; line-height: 34px; text-align: center; background-color: rgb(0, 164, 0); border-color: rgb(0, 164, 0); height: 36px; padding-left: 19px; padding-right: 19px; border-radius: 2px;">
         <div class="_43rl">
            <div data-hover="tooltip" data-tooltip-display="overflow" class="_43rm">
               <div class="_304_ clearfix">
                  <div class="_ohe lfloat">
                     <div class="_2pis">Donate</div>
                  </div>
                  <div class="_ohf rfloat">
                     <div class="_2pii"><span>$55.00</span></div>
                  </div>
               </div>
            </div>
         </div>
      </button>
  </div>
</div>

To jest selektor atrybutów, zobacz więcej.

0
Twisty 21 listopad 2019, 05:49
Dzięki za odpowiedź, ale nie mogę uruchomić w konsoli? Masz na myśli coś takiego document.getElementById("[data-testid='pay_button']").click();
 – 
aruzmeister
21 listopad 2019, 05:58
Nie, nie mam tego na myśli. Nie można w ten sposób „pobrać elementu według identyfikatora”. Jeśli szukasz metody JavaScript, zobacz więcej tutaj: developer.mozilla.org/en-US/docs/Web/API/Element/…
 – 
Twisty
21 listopad 2019, 19:11