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()