from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.common.exceptions
import time
url = "https://6obcy.org"
def send_text(browser, text, css_selector="#box-interface-input"): # wysyła wiadomość do podanego obcego
try:
textbox = browser.find_element_by_css_selector(css_selector)
textbox.send_keys(text)
textbox.send_keys(Keys.RETURN)
except selenium.common.exceptions.ElementNotInteractableException:
try:
time.sleep(1)
textbox = browser.find_element_by_css_selector(css_selector)
textbox.send_keys(text)
textbox.send_keys(Keys.RETURN)
except selenium.common.exceptions.ElementNotInteractableException:
return
def start_conversation(browser): # zaczyna konwersacje
try:
start = browser.find_element_by_css_selector("#intro-start") # szuka przycisku "Połącz z obcym"
start.click()
except selenium.common.exceptions.NoSuchElementException:
retry = browser.find_element_by_css_selector("#ov-new-talk") # szuka przycisku "Nowa rozmowa"
retry.click()
def read_last_stranger_message(browser):
message_log = browser.find_element_by_css_selector("#log-dynamic") # wczytuje wszystkie wiadomości
log_obcy = message_log.find_elements_by_class_name("log-stranger") # wybiera tylko wiadomości obcego
if len(log_obcy) == 0:
return "", 0
else:
return log_obcy[-1].text, len(log_obcy) # zwraca ostatnią wiadomość obcego
def disconnect(browser): # rozłącza rozmowę
try:
button = browser.find_element_by_css_selector("#ov-disconnect-me")
button.click()
button = browser.find_element_by_css_selector("#ov-are-you-sure")
button.click()
except selenium.common.exceptions.ElementNotInteractableException:
return
def is_disconnected(browser): # sprawdza czy obcy się rozłączył
element = browser.find_element_by_css_selector(
"#log-static-end-talk > p:nth-child(1) > span:nth-child(1) > span:nth-child(2)") # szuka elementu odpowiedzialnego za za rozłączenie obcego
if element.is_displayed():
return True
else:
return False
def main():
print("to do dzieła")
obcy1 = webdriver.Firefox()
obcy1.get(url)
print("pierwsza przeglądarka gotowa")
obcy2 = webdriver.Firefox()
obcy2.get(url)
print("druga przeglądarka gotowa")
while True:
obcy1_message_count = 0
obcy2_message_count = 0
time.sleep(3)
print("bob budowniczy")
start_conversation(obcy1)
start_conversation(obcy2)
while True:
message, count = read_last_stranger_message(obcy1)
if count > obcy1_message_count:
send_text(obcy2, message[5:]) # [5:] bo wysyłało też "Obcy: "
obcy1_message_count = count
message, count = read_last_stranger_message(obcy2)
if count > obcy2_message_count:
send_text(obcy1, message[5:])
obcy2_message_count = count
if is_disconnected(obcy1):
disconnect(obcy2)
break
if is_disconnected(obcy2):
disconnect(obcy1)
break
continue
obcy1.quit()
obcy2.quit()
if __name__ == "__main__":
main()