Проверьте, есть ли люди в сети или офлайн в Whatapp - Python Selenium - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь создать проект python -селен, который проверяет, находятся ли люди в моем списке чата в WhatsApp онлайн или офлайн. По сути, это приводит к тому, что один за другим он проверяет, находится ли кто-то в сети или нет, а затем сохраняет данные в файле Excel. Также он дает зеленый фон людям, которые в сети ..

вот мой код:

from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from openpyxl import Workbook
from openpyxl.styles import PatternFill
import time

workbook = Workbook()
sheet = workbook.active

browser = webdriver.Chrome(executable_path=r"F:\software\chromedriver_win32\chromedriver.exe")
browser.get('https://web.whatsapp.com/')

print("Loading..\n")

for x in range(5,0,-1):
    print(x)
    time.sleep(1)

#the below function checks whether the 'online' element exists or not
#I got the class name by inspecting the WhatsappWeb page
def check_exists_by_xpath():
    try:
        browser.find_element_by_xpath('//span[@class="O90ur _3FXB1"]')
    except NoSuchElementException:
        return False
    return True


count = 1
#the xpath gets the name of the persons on my chatlist
for iterator in browser.find_elements_by_xpath('//div[@class="_2wP_Y"]'):
    iterator.click()

    cellA = "A" + str(count)
    cellB = "B" + str(count)
    time.sleep(2)
    name = browser.find_element_by_xpath('//div[@class="_3XrHh"]/span').text
    if check_exists_by_xpath() == True:
        sheet[cellA] = name
        sheet[cellB] = " isOnline\n"
        sheet[cellA].fill = PatternFill(start_color="a4d968", end_color="a4d968", fill_type = "solid")
        sheet[cellB].fill = PatternFill(start_color="a4d968", end_color="a4d968", fill_type = "solid")
    if check_exists_by_xpath() == False:
        sheet[cellA] = name
        sheet[cellB] = " isOffline\n"
    count = count + 1

workbook.save(filename="WhatsApp_Data.xlsx")
print("Complete..!")
browser.close()

Но я не могу понять, почему код останавливается после сбора данных 18 люди? Также любой может найти лучшую технику для достижения этой цели, кроме брутфорсинга.

На самом деле код просто нажимает на имена людей в списке WhatsappWeb и если элемент, который отображает онлайн-сообщение (под именем) - существует, затем возвращает истину или ложь ..

...