Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Yani spesifik olarak bu kafandaki şeyi nasıl yapacağının bir kaynağı varsa ben bilmiyorum.
Selenium ile yapacağın şey, mesajın geldiği bloğu okumak, okuduğunda da mesajın, dosyada okuduğun stringlerde var mı kontrol etmek.
Mesela, diyelim x sitesinde mesajlar, div.chat-box içerisinde p.message olarak geliyor olsunlar. Dediğim şeyi yapan dandirikten bir site de yazdım ki örnek gösterebileyim.
Login yapıldığını varsayıyorum bu örneği atarken ama dikkat et sende login gerekecek. Bu login işini kendin halledersin. Benzeri mantıkla yapacaksın zaten.
Kodlara açıklama yazmaya üşendim. Oku anlamadığın yeri neden öyle yaptığımı sor. Handle response loopta olmalı tabii ki. Onları falan halledersin. Halledemiyorsan, ama programlama öğrenmekle uğraşmak istemiyorsan, AI'da bu kadar basit bir şey için yardım eder.
Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
class Repsonses:
def __init__(self, file_name: str) -> None:
self.responseList = {}
with open(file_name, "r") as responses:
for line in responses:
temp = line.split(";")
if len(temp) > 2:
raise Exception("format is: \"message|alternativemessage;response\"")
message, response = temp
if message.find("|") != -1:
messages = message.split("|")
for m in messages:
self.responseList[m] = response
else:
self.responseList[message] = response
def getResponse(self, message: str):
keyList = list(self.responseList.keys())
for key in keyList:
if message.find(key) != -1:
return self.responseList[key]
return -1
response_list = Repsonses("cevaplar.txt")
driver = webdriver.Chrome()
driver.get("http://localhost:5500/index.html") # Buraya siteyi yazıyorsun.
time.sleep(1.5)
def handleResponse():
last_message = driver.find_elements(By.CSS_SELECTOR, "div.chat-box p.message")
if len(last_message) == 0:
return
response = response_list.getResponse(last_message[-1].text.lower())
if response == -1:
return
inputbox = driver.find_element(By.ID, "sendtext")
inputbox.send_keys(response)
handleResponse()
input()
Bu da cevaplar.txt'nin içeriği;
Kod:
mesaj;yanıt
merhaba;Merhabalar hoş geldiniz
nasılsın|napıyorsun|naber|napıyosun;İyiyim siz nasılsınız?
Yani spesifik olarak bu kafandaki şeyi nasıl yapacağının bir kaynağı varsa ben bilmiyorum.
Selenium ile yapacağın şey, mesajın geldiği bloğu okumak, okuduğunda da mesajın, dosyada okuduğun stringlerde var mı kontrol etmek.
Mesela, diyelim X sitesinde mesajlar, div. Chat-box içerisinde p. Message olarak geliyor olsunlar. Dediğim şeyi yapan dandirikten bir site de yazdım ki örnek gösterebileyim.
Login yapıldığını varsayıyorum bu örneği atarken ama dikkat et sende login gerekecek. Bu login işini kendin halledersin. Benzeri mantıkla yapacaksın zaten.
Kodlara açıklama yazmaya üşendim. Oku anlamadığın yeri neden öyle yaptığımı sor. Handle response loopta olmalı tabii ki. Onları falan halledersin. Halledemiyorsan, ama programlama öğrenmekle uğraşmak istemiyorsan, AI'da bu kadar basit bir şey için yardım eder.
Python:
from selenium import webdriver.
from selenium.webdriver.common.by import By.
import time.
class Repsonses:
def __init__(self, file_name: str) -> None:
self.responseList = {}
with open(file_name, "r") as responses:
for line in responses:
temp = line.split(";")
if len(temp) > 2:
raise Exception("format is: \"message|alternativemessage;response\"")
message, response = temp.
if message.find("|") != -1:
messages = message.split("|")
for m in messages:
self.responseList[m] = response.
else:
self.responseList[message] = response.
def getResponse(self, message: str):
keyList = list(self.responseList.keys())
for key in keyList:
if message.find(key) != -1:
return self.responseList[key]
return -1
response_list = Repsonses("cevaplar.txt")
driver = webdriver.Chrome()
driver.get("http://localhost:5500/index.html") # Buraya siteyi yazıyorsun.
time.sleep(1.5)
def handleResponse():
last_message = driver.find_elements(By.CSS_SELECTOR, "div.chat-box p.message")
if len(last_message) == 0:
return.
response = response_list.getResponse(last_message[-1].text.lower())
if response == -1:
return.
inputbox = driver.find_element(By.ID, "sendtext")
inputbox.send_keys(response)
handleResponse()
input()
Bu da cevaplar.txt'nin içeriği;
Kod:
mesaj;yanıt
merhaba;Merhabalar hoş geldiniz.
nasılsın|napıyorsun|naber|napıyosun;İyiyim siz nasılsınız?
Çok teşekkür ederim, hocam bu arada önerinize uyup Selenium geçtimde sitede sadece name ile giriş yapılıyor bende otomatikleştirmek istemiştim yapamıyorum pyautogui geçeceğim sanırım tekrardan. Bunun hakkında bir öneriniz var mıdır?
Kod:
username=driver.find_element(By.NAME,"Username")
Böyle bir şey yapmama rağmen işe yaramıyor hiçbir şekilde hata veriyor. Baktığımda bazı kişilerde çalışıyor ama ben çalıştıramadım.
Çok teşekkür ederim, hocam bu arada önerinize uyup Selenium geçtimde sitede sadece name ile giriş yapılıyor bende otomatikleştirmek istemiştim yapamıyorum pyautogui geçeceğim sanırım tekrardan. Bunun hakkında bir öneriniz var mıdır?
Kod:
username=driver.find_element(By.NAME,"Username")
Böyle bir şey yapmama rağmen işe yaramıyor hiçbir şekilde hata veriyor. Baktığımda bazı kişilerde çalışıyor ama ben çalıştıramadım.
Bak şimdi, By.NAME dediğinde, HTML tagleri içerisinde ki attributelarda, name attribute'u için de "Username" varsa getirecek. username girdiğin kutuya sağ tıkla, incele de, sonra da bak ne name vermişler. Onu yaz.
Bu arada eğer programlamayla ilgilendiğinden böyle bir projeyle uğraşıyorsan, taa en başa dönüp pek çok kavramı öğrenmen lazım. Şuan bu kadar zorlanmanın sebebi bu.
Bak şimdi, by. Name dediğinde, HTML tagleri içerisinde ki attributelarda, name Attribute'u için de "username" varsa getirecek. Username girdiğin kutuya sağ tıkla, incele de, sonra da bak ne name vermişler. Onu yaz.
Bu arada eğer programlamayla ilgilendiğinden böyle bir projeyle uğraşıyorsan, TAA en başa dönüp pek çok kavramı öğrenmen lazım. Şu an bu kadar zorlanmanın sebebi bu.
Exception has occurred: ElementNotInteractableException
Message: element not interactable
Debug modunda üstteki koddan username. Send_keys kısmı için böyle bir hata alıyorum şu anda. Kusura bakmayın sizi çok yoruyorum ama bu şekilde oluyor Selenium önerdiğiniz için geçmek istedim bir de eski dosyayı sildim sıfırdan başlayayım düzgünce bu sefer yaparım diye.
Input'u girmesini istediğin yer visible durumda değil mi? Key'i gönderebilmen için, selenium'un dokunabildiği bir alanda olması lazım. Herhangi bir pop up vs çıkıyor olması da key göndermesine engel olur.
Hayır, hangi site için yapmaya çalıştığını anlasam, elli kere çözmüştük şu işi.
Input'u girmesini istediğin yer visible durumda değil mi? Key'i gönderebilmen için, Selenium'un dokunabildiği bir alanda olması lazım. Herhangi bir pop up vs çıkıyor olması da key göndermesine engel olur.
Hayır, hangi site için yapmaya çalıştığını anlasam, elli kere çözmüştük şu işi.