Сканирование списка веб-чатов WhatsApp в правильном порядке с помощью selenium webdriver - PullRequest
0 голосов
/ 13 июля 2020

Я хочу получить весь чат div в WhatsApp Web. Я могу получить их по имени класса следующим образом:

chats = driver.find_elements_by_class_name('_210SC')

Это было бы хорошо, но он получает только первые 20 чего-то и получает их в случайном порядке.

Например chats[0].click() получит мне 1-й чат, а chat[1].click() даст мне 46-й чат.

Если я прокручиваю посередине и снова выполняю driver.find_elements_by_class_name('_210SC'), я снова получу другой набор чатов в произвольном порядке. Похоже, чаты генерируются динамически.

Есть ли способ получить их в порядке отображения чатов, например, если мой первый чат - Майк, а второй Джордж, chats[0] должен быть Майк, а chats[1] должен быть Джордж и др. c. и что именно здесь происходит?

1 Ответ

1 голос
/ 13 июля 2020

Whatsapp Web - это приложение с отложенной загрузкой. В настоящее время он заполнен 21 элементом (я не уверен, зависит ли это от размера экрана?). Что касается порядка элементов, по крайней мере, сейчас, кажется, что сначала это самая последняя запись, а затем следующие 20 в обратном порядке, что означает chat[0] > chat[20] > chat[19] ... chat[1]

. Я бы попытался сделать следующее: получить первые 21 элемент, прокрутить до последнего элемента, который должен находиться в chats[1], получить снова ... пока не останется новых div. Возможно, вы хотите отслеживать уже собранные вами болтовни (оцените XPath //*[@id="pane-side"]//div[@class='_210SC']//div[@class='_3dtfX']//span[@class='_3ko75 _5h6Y_ _3Whw5'], чтобы узнать их имена)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...