Что такое JavaScript-эквивалент Python .text? - PullRequest
0 голосов
/ 29 июня 2018

Обновление: Я закончил и изменил этот скрипт, используя node.js, чтобы сообщить пользователю, кто отписался от него в Instagram. Пожалуйста, найдите его здесь https://github.com/Barani1010/scrapeIG. Спасибо сообществу за столько знаний!

Element.text возвращает текстовое содержимое элемента.

В другом потоке в SO сценарий python собирает данные из фолловера фолловеров в учетной записи Instagram. Следующая часть возвращает текст внутри списков и сохраняет их в массиве.

 xpath = "//div[@style='position: relative; z-index: 1;']//ul/li/div/div/div/div/a"
 followers_elems = driver.find_elements_by_xpath(xpath)
 return [e.text for e in followers_elems]

Я пытаюсь добиться аналогичного результата в JavaScript (я использую WebDriverJS):

 const XPATH = "/html/body/div[3]/div/div[2]/div/div[2]/ul/div/li";
 var followers_elems = await driver.findElements(By.xpath(XPATH));
 var followers_temp = [];
 for (var e in followers_elems) {
  followers_temp.push(e.textContent); }
 console.log(followers_temp);

Я не уверен, является ли textContent правильным свойством для .text.

Я пробовал миллион различных альтернатив, но все, что я получаю, это неопределенные значения в массиве:

enter image description here

Я пока не очень хорошо разбираюсь в JS, но я уверен, что e читает с followers_elems, и если я просто нажму e внутри массива, он может просто записать общее число подписчиков. Это получение текстового значения из xpath, которое я не понимаю. Python делает это так элегантно, но, несмотря на многословность, JavaScript подводит меня.

Спасибо.

1 Ответ

0 голосов
/ 29 июня 2018

WebElement.getText () - это эквивалент javascript для получения текстового элемента в python при использовании WebdriverJS.

Это должно сработать для вас. Я создал асинхронную функцию и легко понять для цикла. Кроме того, поскольку getText () возвращает обещание, поэтому я использую async - await, чтобы получить текст и отправить его в массив follow_temp.

async function pushTextIn() {
  for (let i = 0; i < followers_elems.length; i++) {
    let text = await followers_elems[i].getText();
    console.log('pushing text: ', text);
    followers_temp.push(text);
  }
  return followers_temp;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...