Selenium "no such element xpath", css selector finden nichts

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
4fersen
User
Beiträge: 11
Registriert: Samstag 28. März 2020, 21:47
Wohnort: 127.0.0.1

Hey leute,
ich versuche gerade schon seit Ewigkeiten mithilfe von Selenium auf TikTok ein Video hochzuladen, jedoch möchte Selenium absolut nichts drücken bzw Text einfügen.

Ich nehme jetzt den "Veröffentlichen" Button als Beispiel.

Code: Alles auswählen

<button type="button" class="tiktok-btn-pc tiktok-btn-pc-large tiktok-btn-pc-primary">Veröffentlichen</button>
Versucht habe ich schon so viel, dies waren für mich jedoch die naheliegendsten:

Code: Alles auswählen

driver.find_element(By.CSS_SELECTOR, 'button[class="tiktok-btn-pc-tiktok-btn-pc-large-tiktok-btn-pc-primary"]').click()
driver.find_element(By.CSS_SELECTOR, 'button[class="tiktok-btn-pc tiktok-btn-pc-large tiktok-btn-pc-primary"]').click()
driver.find_element(By.CLASS_NAME, 'tiktok-btn-pc-tiktok-btn-pc-large-tiktok-btn-pc-primary')
driver.find_element(By.CLASS_NAME, 'tiktok-btn-pc tiktok-btn-pc-large tiktok-btn-pc-primary')
driver.find_element(By.XPATH, '"/html/body/div[1]/div/div/div/div/div[3]/div[2]/div[8]/button[2]').click()
Doch leider erscheint immer die Fehlermeldung "No such element"

Falls jemand das Ganze nachkonstruieren möchte, ist hier der "undetected_chromedriver" notwendig, da TikTok Selenium sperrt.

Über eure Hilfe würde ich mich wirklich freuen!
shoening
User
Beiträge: 19
Registriert: Donnerstag 20. Oktober 2011, 19:28

Wenn Du per XPATH suchst, dann such brauchst Du nicht den ganzen Pfad anzugeben.

Wenn ich auf der Seite https://www.tiktok.com nach dem Link suche, der mit dem Text "Upload" beginnt (neben dem roten Login Button), dann geht das mit:

driver.find_element_by_xpath('//a[starts-with(text(), "Upload")]')

Bei der Suche mittels XPATH würde ich mir die Seite im Browser mit den Developer-Tools / Inspector ansehen.
Am besten zu finden sind Elemente, wenn sie eine ID haben. Auf der TikTok Seite scheint mir ein Framework benutzt zu werden, der die Elemente mit den Attribut "data-e2e" eindeutig kennzeichnet. (Das ist aber nur eine Vermutung.)

Und noch ein Hinweis: wenn ich bei mir den "undetected_chromedriver" verwende, dann hat der keine Voreinstellung bzgl. der Sprache. Daher wird mir die TikTok Seite auf englisch angezeigt. Das muss man dann natürlich bei der Suche nach angezeigten Inhalten berücksichtigen.
Antworten