123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- from selenium import webdriver
- from selenium.common.exceptions import NoSuchElementException
- from selenium.webdriver.common.keys import Keys
- from time import sleep
- browser = None
- def start():
- global browser
- browser = webdriver.Firefox(executable_path='/home/luca/Pojects/wbot/WhatsAppBot/geckodriver') #Pfad zum geckodriver
- browser.get('https://web.whatsapp.com/')
- print('Scan QR')
- def send_messages_to_contact(contact_name, *messages):
- while True:
- try:
- search = browser.find_element_by_css_selector('#side > div._3CPl4 > div > label > input')
- except NoSuchElementException:
- print('exception')
- sleep(1)
- continue
- break
- title = None
- try:
- title = browser.find_element_by_css_selector('#main > header > div._1WBXd > div > div > span').text
- except NoSuchElementException:
- pass
- if title != contact_name:
- search.send_keys(contact_name)
- search.send_keys(Keys.ENTER)
- try:
- not_found = browser.find_element_by_css_selector('#pane-side > div > div > span').text
- if not_found == 'No chats, contacts or messages found' or not_found == 'Es wurden keine Chats, Kontakte oder Nachrichten gefunden':
- return
- except:
- pass
- try:
- input = browser.find_element_by_css_selector('#main > footer > div._3oju3 > div._2bXVy > div > div._2S1VP.copyable-text.selectable-text')
- except NoSuchElementException:
- return
- for m in messages:
- for c in m:
- if c == '\n':
- input.send_keys(Keys.SHIFT, Keys.ENTER)
- else:
- input.send_keys(c)
- input.send_keys(Keys.ENTER)
- print('Message sent to ' + contact_name + '.')
- sleep(0.6)
- def retrieve_newest(contact_name, num):
- while True:
- try:
- #search = browser.find_element_by_id('input-chatlist-search')
- search = browser.find_element_by_css_selector('#side > div._3CPl4 > div > label > input')
- except NoSuchElementException:
- sleep(1)
- continue
- break
- title = None
- try:
- title = browser.find_element_by_css_selector('#main > header > div._1WBXd > div > div > span').text
- except NoSuchElementException:
- pass
- if title != contact_name:
- search.send_keys(contact_name)
- search.send_keys(Keys.ENTER)
- try:
- not_found = browser.find_element_by_css_selector('#pane-side > div > div > span').text
- if not_found == 'No chats, contacts or messages found' or not_found == 'Es wurden keine Chats, Kontakte oder Nachrichten gefunden':
- return
- except:
- pass
- messages = browser.find_elements_by_css_selector('div > div > div > div.copyable-text > div > span')
- newest = []
- for i in range(num):
- try:
- newest.append(messages[i].text)
- except IndexError:
- break
- if i == len(messages) - 1:
- browser.find_element_by_tag_name('html').send_keys(Keys.ARROW_UP)
- browser.find_element_by_tag_name('html').send_keys(Keys.ARROW_UP)
- messages = browser.find_elements_by_css_selector('div > div > div > div.copyable-text > div > span')
- return list(reversed(newest))
- def set_about(status):
- while True:
- try:
- browser.find_element_by_css_selector('#side > header > div._2umId > div > img').click()
- except NoSuchElementException:
- sleep(1)
- continue
- break
- sleep(1)
- browser.find_element_by_css_selector('#app > div > div > div.MZIyP > div._3q4NP.k1feT > span > div > div > div > div:nth-child(4) > div.ogWqZ._2-h1L > div._1DTd4._1G2k- > div._2YmC2 > span:nth-child(1) > div').click()
- input = browser.find_element_by_css_selector('#app > div > div > div.MZIyP > div._3q4NP.k1feT > span > div > div > div > div:nth-child(4) > div.ogWqZ._2-h1L._31WRs > div._1DTd4 > div._3F6QL.bsmJe > div._2S1VP.copyable-text.selectable-text')
- input.clear()
- input.send_keys(status)
- input.send_keys(Keys.ENTER)
- print('About changed to "' + status + '".')
- browser.find_element_by_css_selector('#app > div > div > div.MZIyP > div._3q4NP.k1feT > span > div > div > header > div > div.SFEHG > button').click()
- def close():
- browser.close()
|