Как запустить функцию в консоли chrome, когда появляется текстовый элемент в коде html? - PullRequest
0 голосов
/ 19 марта 2020

Я пытался написать скрипт, который запускает клик по указанному c элементу онлайн-сайта (не моего сайта) и в указанное c время. Указанное c время дается обратным отсчетом, который запускается внутри веб-сайта.

, читая файл html этого веб-сайта, код (захваченный в общем c времени) выглядит так:

<div class="thecountdowndown" id="counting"><div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>00</div><small>days</small></div><div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>23</div><small>hours</small></div><div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>12</div><small>minutes</small></div><div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>41</div><small>seconds</small></div></div>

изображение кода счетчика . Таким образом, в основном показывается таймер, и каждую секунду html изменение кода.

Моя проблема в том, что я не могу понять, как написать функцию, которая проверяет, когда код здесь появляется в html! Этот не работает:

function searchTree(element, matchingTitle){
     if(element.title == matchingTitle){
          return element;
     }else if (element.children != null){
          var i;
          var result = null;
          for(i=0; result == null && i < element.children.length; i++){
               result = searchTree(element.children[i], matchingTitle);
          }
          return result;
     }
     return null;
}

Возможно, я должен использовать var и a while. L oop: пока переменная имеет значение 0, функция продолжает поиск. но я не знаю, как написать функцию «поиск».

И сказать все это, я не могу придумать, как запустить функцию «щелкнуть» после того, как функция «поиск» имеет обнаружил, что код появился.

Кто-нибудь может мне помочь?

Обновление: другими словами, на этом сайте начинается обратный отсчет, который начинается в полночь. Теперь, как я могу (с помощью консоли chrome) нажать кнопку, когда обратный отсчет времени показывает время «05:45:00»? Кнопка, которую я хочу нажать, находится на той же странице обратного отсчета.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Возможно, вам придется немного подправить это, но это может помочь.

const clickNow = function(targetElement, elementToClick) {

//May have to play with the selector to get node that holds the value
const timer = document.querySelector(targetElement);
setInterval(()=>{

    if(timer.value === "5:40:01 pm") {
        clickButton(elementToClick);
    }else {
        console.log("no yet", timer.value,"5:40:01 pm");
    }

},100)


    function clickButton(elementToClick) {
        const toClick = document.querySelector(elementToClick);
        toClick.click();
    }
}

clickNow("input[name='display2']",".t");
0 голосов
/ 20 марта 2020

// just for simulating change in counter on HTML - already on website / dont inject through dev-tools
var seconds = 45;
setInterval(() => {
  document.getElementById("fakeChange").innerHTML = seconds--;
}, 1000);

// is injected through dev-tools / console by yourself
var elIdToObserve = 'counting';
var elIdToSimulateClick = 'submit';
// get the following value by manually calling: 
// console.log(document.getElementById(elIdToObserve).innerHTML)
var waitForContentAppearing = `
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>00</div><small>days</small></div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>23</div><small>hours</small></div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>12</div><small>minutes</small></div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div id="fakeChange">41</div><small>seconds</small></div>
`; // change this to your target content i.e. seconds 46 to 41

setInterval(() => {
  if(document.getElementById(elIdToObserve).innerHTML === waitForContentAppearing) {
    // Add you own instructions here that should be executed

    // Since you mentioned there is a button within the webpage I added a button with id that gets a automated click - the button I added does do something i.e. for visualization I made the button show some text indicating it has been "clicked".
    document.getElementById(elIdToSimulateClick).click();
  }
}, 500);
<!-- comes from existing website -->
<div class="thecountdowndown" id="counting">
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>00</div><small>days</small></div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>23</div><small>hours</small></div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div>12</div><small>minutes</small></div>
<div class="col-xs-3 col-sm-3 col-md-3 col-lg-3"><div id="fakeChange">46</div><small>seconds</small></div>
</div>
<button id="submit" onclick="document.getElementById('simulationClick').innerHTML = 'Simulated click at timestamp '+Date.now()">Send</button>
<div id="simulationClick">
</div>

Вам также может понадобиться выбрать с помощью классов, чтобы получить кнопку, на которую вы хотите нажать.

...