синхронизировать page.evaluate в phantom.js - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть две функции page.evaluate, как мне это синхронизировать? Могу ли я передать функцию в качестве аргумента page.evaluate? У моей функции есть два аргумента: selector и textNode. Передача функции без аргументов в page.evaluate работает (как показано в фрагменте ниже), но мне нужно передать аргументы функции ... Я не уверен, что делать.

var page = require('webpage').create();
page.open('https://web.telegram.org/#/login', function(status) {
  console.log(status)
  if (status !== 'success') {
    console.log('Unable to access network');
  } else {
    page.evaluate(function(){
      document.querySelector("input[ng-model='credentials.phone_country']").value = ''
      document.querySelector("input[ng-model='credentials.phone_country']").click();
    })
    var keyNodes = '380';
    var keyNodeArr = keyNodes.split('');
    console.log(keyNodeArr)
    for(var i = 0; i < keyNodeArr.length; ++i){
      page.sendEvent('keypress', page.event.key[keyNodeArr[i]], null, null, null);
    }
    page.evaluate(function(){
      document.querySelector("input[ng-model='credentials.phone_number']").value = ''
      document.querySelector("input[ng-model='credentials.phone_number']").click();
    })
    keyNodes = '631091144';
    var keyNodeArr = keyNodes.split('');
    console.log(keyNodeArr)
    for(var i = 0; i < keyNodeArr.length; ++i){
      page.sendEvent('keypress', page.event.key[keyNodeArr[i]], null, null, null);
    }


    console.log("aa")
    page.render('github.png');
  }
  //phantom.exit();
});

1 Ответ

0 голосов
/ 03 сентября 2018

Используя замыкание, я имею в виду это (см. mySelector и myValue):

var page = require('webpage').create();
page.open('https://web.telegram.org/#/login', function(status) {
  console.log(status)
  if (status !== 'success') {
    console.log('Unable to access network');
  } else {
    // get these from response or from whatever other source
    var mySelector = "input[ng-model='credentials.phone_country']";
    var myValue = '';

    page.evaluate(function(){
      document.querySelector(mySelector).value = myValue;
      document.querySelector(mySelector).click();
    })
    var keyNodes = '380';
    var keyNodeArr = keyNodes.split('');
    console.log(keyNodeArr)
    for(var i = 0; i < keyNodeArr.length; ++i){
      page.sendEvent('keypress', page.event.key[keyNodeArr[i]], null, null, null);
    }
    page.evaluate(function(){
      document.querySelector(mySelector).value = myValue;
      document.querySelector(mySelector).click();
      // or use variables with other names
      // if you need them to be different from the first ones
    })
    keyNodes = '631091144';
    var keyNodeArr = keyNodes.split('');
    console.log(keyNodeArr)
    for(var i = 0; i < keyNodeArr.length; ++i){
      page.sendEvent('keypress', page.event.key[keyNodeArr[i]], null, null, null);
    }


    console.log("aa")
    page.render('github.png');
  }
  //phantom.exit();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...