Python: Warum öffnet das Öffnen von Twitter mit Selenium im Headless-Modus nicht die “normale” Twitter-Login-Seite?

Lage: Ich verwende Selen, um Twitter zu schaben. Mein Skript funktioniert einwandfrei, solange ich es bin nicht kopflos laufen. Jetzt versuche ich, den Prozess zu beschleunigen, und ich versuche, Chrome im Headless-Modus auszuführen.

Problem: Sobald ich hinzufüge: options.add_argument('--headless') als Option funktioniert es nicht mehr.

Ich habe andere Beiträge zu diesem Thema und mit der Hilfe gefunden driver.get_screenshot_as_file("screenshot.png") Ich habe einen Screenshot gemacht. Auf dem Screenshot sehe ich folgendes: Ein Twitter-Logo und den Satz “Dieser Browser wird nicht mehr unterstützt”. Ich bin verwirrt, da alles gut funktioniert (was bedeutet, dass ich zur “normalen” Twitter-Anmeldeseite gelangen kann), wenn ich den “headless” -Modus deaktiviere.

Tor:
Ich möchte Tweets im Headless-Modus schaben können

Code:

def setup():    
   options = Options()
   options.add_argument('--headless')
   options.add_argument("--window-size=1920,1080")
   options.add_argument('--disable-dev-shm-usage')      
   driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
   driver.get("https://www.twitter.com/login")
   driver.get_screenshot_as_file("screenshot1.png")
   username = WebDriverWait(driver, 30).until(EC.presence_of_element_located(("xpath", '//input[@name = "text"]')))
   username.send_keys('myemailgoeshere@whatever.com')
   username.send_keys(Keys.RETURN)

   print("finished username") # control to check whether it finished the first part

   try:
       phone = WebDriverWait(driver, 5).until(EC.presence_of_element_located(("xpath", '//input[@data-testid = "ocfEnterTextTextInput"]')))
       phone.send_keys('+1234567890')
       phone.send_keys(Keys.RETURN)
   except TimeoutException:
       pass
   password = WebDriverWait(driver, 30).until(EC.presence_of_element_located(("xpath", '//input[@name = "password"]')))
   password.send_keys('mypassword')
   password.send_keys(Keys.RETURN)
   WebDriverWait(driver, 30).until(EC.presence_of_element_located(("xpath", './/span[contains(text(), "Refuse non-essential cookies")]'))).click()
   search_input = WebDriverWait(driver, 30).until(EC.presence_of_element_located(("xpath", '//input[@aria-label = "Search query"]')))
   search_input.send_keys('#life')
   search_input.send_keys(Keys.RETURN)

   print("finished setup")

   return driver

Fehlermeldung: Zeile 9 username = WebDriverWait(driver, 30).until(EC.presence_of_element_located(("xpath", '//input[@name = "text"]'))) gibt eine TimeoutException. Dies liegt daran, dass die “Login-Seite” anders aussieht/nicht existiert, wie auf dem Screenshot beschrieben.

Ich bin neu bei StackOverflow. Bitte lassen Sie mich wissen, wenn etwas unklar ist oder ob ich weitere Auskunftrmationen hinzufügen soll.

Vielen Dank!

Newsletter

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.