Python, her saat başı mesaj atan kod hata veriyor.

BayZorro

Katılımcı Üye
4 Tem 2013
471
48
Everywhere
Arkadaşlar Merhaba,

Her saat başı WhatsApp üzerinden mesaj atacak bir python kodu hakkımda yardımınız lazım. Kod çalışıyor kısmen. WhastApp'ı açıyor ancak numarayı bulup mesajı yollamıyor neden acaba?

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
import time
import schedule
import random

def get_random_message(file_name):
with open(file_name, 'r', encoding='utf-8') as file:
messages = file.readlines()
return random.choice(messages).strip()

def send_message(phone_number, message):
search_box_xpath = '//*[@id="side"]/div[1]/div/div/div[2]/div/div[1]/p'
search_box = driver.find_element(By.XPATH, search_box_xpath)
search_box.send_keys(phone_number)
search_box.send_keys(Keys.ENTER)

message_box_xpath = '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p'
message_box = driver.find_element(By.XPATH, message_box_xpath)
message_box.send_keys(message)
message_box.send_keys(Keys.ENTER)

s = Service("path/to/chromedriver")
driver = webdriver.Chrome(service=s)
driver.get("WhatsApp Web")
time.sleep(10)

phone_number = "+9055555555" #Mesaj göndermek istediğin telefon numarasını gir.

def send_random_message():
message = get_random_message("auto-message-wp/messages.txt")
send_message(phone_number, message)

# Her saat başı rastgele bir mesaj gönderme işlemini planlama
schedule.every().hour.at(":00").do(send_random_message)

while True:
schedule.run_pending()
time.sleep(60) # Her 60 saniyede bir planlanmış görevleri kontrol et
 

WHITERUBY

Uzman üye
20 Şub 2023
1,684
1,582
🔱
Ne gibi hocam mesela? Yardımcı olma şansınız var mı?
driver fonksiyonu tanımlamanız gerekiyor."global driver" yazarak tanımlayabilirsiniz.
def send_message(phone_number, message):>>>>şu kodun altına yazabilirsiniz.

Driver get fonksiyonunun içine driver.get("WhatsApp Web") yazmanız gerekir.Yoksa HTTP yanıtı alamazsınız.
Whatsapp Web verisini silin.

Ayrıca bunun hemen altında bulunan time sleep içine 2 yazabilirsiniz.Bu yeterli olur 10 biraz fazla.

Chrome üzerinden gerçekleştirdiğimiz için güncel olduğundan emin olun.
Bunlar benim görebildiklerim varsa eksik yardımcı olur arkadaşlar.

Ayrıca,

def get_random_message(file_name):
with open(file_name, 'r', encoding='utf-8') as file:
messages = file.readlines()
return random.choice(messages).strip()

kısmını yanlış yazmış olabilirsiniz,ne olur ne olmaz tab kullanarak yazın her alt satıra geçtiğinizde bir öncekine göre satır başı bırakınız.

Şöyle;

def get_random_message(file_name):
(1X TAB)with open(file_name, 'r', encoding='utf-8') as file:
(2X TAB) messages = file.readlines()
(1X TAB)=return random.choice(messages).strip()


Umarım bu sefer doğru çalışır.Olursa çözüldü olarak işaretleyebilirsiniz.
 

Helmsys

Ar-Ge Ekibi Kıdemli
16 Mar 2022
1,492
1,653
Yeni yeni öğreniyorum.
Yeni öğrenirken üçüncü parti kütüphaneleri yükleyip neden işleri daha da komplike hale getiriyorsunuz... Deneyin bişeyler, mantığını kavrayın, örneklere bakın, daha sonra yapmaya çalışın...

Ayrıca attığınız kod okunmuyor. mesaj yazma bölümünde en sağda üç nokta bulunuyor ona bastıktan sonra "</>" butonuna basın, açılan pencerede dili seçip dilin kurallarına göre kodu oradaki boşluğa yapıştırın.

resimdeki 1x tab gibi uyarılar dilin yapısındaki boşluk karakteri. Tab tuşuna basıldığında boşluk karakteriyle doldurması demek. Yani bir altındaki satır, bir üstündeki satırın kapsayıcısı olduğu anlamına geliyor. Malum... pythonda boşluk tuşu da bir sözdizimi kurallarından biri.
WhastApp'ı açıyor ancak numarayı bulup mesajı yollamıyor neden acaba?
Web sayfasının zamanında yüklenememesinden kaynaklanıyor olabilir, bekleme süresi eklemeniz gerekebilir, döngü içinde çağırmanız gerekebilir...
 
Son düzenleme:

WHITERUBY

Uzman üye
20 Şub 2023
1,684
1,582
🔱
(tab) yazdığım yerlere klavyedeki sol ortadaki tab işaretine bas kaç x kere söylediysem.

iu

2x tab ===== 2kere tab'a bas.


def send_message(phone_number, message):
global driver
search_box_xpath = '//*[@id="side"]/div[1]/div/div/div[2]/div/div[1]/p'
search_box = driver.find_element(By.XPATH, search_box_xpath)
search_box.send_keys(phone_number)
search_box.send_keys(Keys.ENTER)


Kırmızı gösterdiiğim yere yazabilirsin.
 

BayZorro

Katılımcı Üye
4 Tem 2013
471
48
Everywhere
(tab) yazdığım yerlere klavyedeki sol ortadaki tab işaretine bas kaç x kere söylediysem.

iu

2x tab ===== 2kere tab'a bas.


def send_message(phone_number, message):
global driver
search_box_xpath = '//*[@id="side"]/div[1]/div/div/div[2]/div/div[1]/p'
search_box = driver.find_element(By.XPATH, search_box_xpath)
search_box.send_keys(phone_number)
search_box.send_keys(Keys.ENTER)


Kırmızı gösterdiiğim yere yazabilirsin.
Dediğiniz gibi yaptım ancak whatsapp açılıyor ve sadece ekran da kalıyor numarı bulu mesajı atmıyor.


Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
import time
import schedule
import random

def get_random_message(file_name):
    with open(file_name, 'r', encoding='utf-8') as file:
         messages = file.readlines()
    =return random.choice(messages).strip()

def send_message(phone_number, message):
    global driver
    search_box_xpath = '//*[@id="side"]/div[1]/div/div/div[2]/div/div[1]/p'
    search_box = driver.find_element(By.XPATH, search_box_xpath)
    search_box.send_keys(phone_number)
    search_box.send_keys(Keys.ENTER)

    message_box_xpath = '//*[@id="main"]/footer/div[1]/div/span[2]/div/div[2]/div[1]/div/div[1]/p'
    message_box = driver.find_element(By.XPATH, message_box_xpath)
    message_box.send_keys(message)
    message_box.send_keys(Keys.ENTER)

s = Service("path/to/chromedriver")
driver = webdriver.Chrome(service=s)
driver.get("https://web.whatsapp.com/")
time.sleep(2)

phone_number = "+90555555555" #Mesaj göndermek istediğin telefon numarasını gir.

def send_random_message():
    message = get_random_message("auto-message-py/messages.txt")
    send_message(phone_number, message)

# Her saat başı rastgele bir mesaj gönderme işlemini planlama
schedule.every().hour.at(":00").do(send_random_message)

while True:
    schedule.run_pending()
    time.sleep(60)  # Her 60 saniyede bir planlanmış görevleri kontrol et
 

Babo1945

Üye
8 Tem 2020
165
44
Dardayım
Kodundaki problem input alamayan yerlere yazı yazmaya çalışmak. "role='textarea'" olan kısımlara girdi verebilirsin.
Daha basit anlatım ortada bir yazı var <p> sen de onun üstüne yazmaya çalışıyorsun o yüzden hata veriyor. İnput (girdi) alan yere bir girdi (mesaj, yazı vs)vermen gerekiyor. Kodda işime yaramayan kısımları sildim sen kendine göre düzenlersin ben sadece yol gösterdim. Kolay gelsin

Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
import time
import schedule
import random

def get_random_message(file_name):
    with open(file_name, 'r', encoding='utf-8') as file:
         messages = file.readlines()
    return random.choice(messages).strip()

def warte():
   driver.implicitly_wait(30)
   # 30 saniye yüklenmesini bekler, eğer daha önce yüklenirse (4. saniye) işlemine aynen devam eder

def send_message(phone_number, message):
    textbox = driver.find_element(By.CSS_SELECTOR, "div[role='textbox']")
    warte()
    textbox.send_keys(phone_number)
    warte()
    textbox.send_keys(Keys.ENTER)
    warte()

    msgbox = driver.find_element(By.CSS_SELECTOR, "div[tabindex='10']")
    warte()
    msgbox.send_keys(message)
    warte()
    msgbox.send_keys(Keys.ENTER)
    sleep(3) # burda driver beklemesi yaptım fakat mesaj gitmeden kapanıyor mecbur araya bi tane sleep attım


driver = webdriver.Chrome()
driver.get("https://web.whatsapp.com/")
input("Qr kod okuttuktan sonra ENTER tuşuna basın\n")

phone_number = "+90555555555" #Mesaj göndermek istediğin telefon numarasını gir.

def send_random_message():
    message = get_random_message("auto-message-py/messages.txt")
    send_message(phone_number, message)

# Her saat başı rastgele bir mesaj gönderme işlemini planlama
schedule.every().hour.at(":00").do(send_random_message)

while True:
    schedule.run_pending()
    time.sleep(60)  # Her 60 saniyede bir planlanmış görevleri kontrol et
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.