Fehler beim importieren

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
tobi.wld
User
Beiträge: 2
Registriert: Donnerstag 18. Februar 2021, 18:54

Hallo zusammen,
ich habe vorhin angefangen ein kleines Programm zu schreiben. Nun wollte ich zwischendrin mal testen und mir ist direkt ein Fehler aufgefallen.

Und zwar steht bei mir "ImportError: attempted relative import with no known parent package" und ich bekomme diesen nicht gefixt.

Habe bereits im Internet recherchiert, aber bin nicht weiter gekommen.
Bin noch neu bei Python, habe aber Erfahrung mit Java und C++

Falls jemand eine Idee hat gerne her damit.

Mein Code:

from selenium import webdriver
from selenium.webdriver.common.by import By
from.selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import excepted_conditions as EC
from selenium.webdriver.common.keys import Keys
import time


class InstagramBot():
def __init__(self, username, password):
self.username = username
self.password = password

self.browser = webdriver.Chrome("./chromedriver.exe")

def WaitForObject(self, type, string):
return WebDriverWait(self.browser, 3).until(EC.presence_of_element_located((type, string)))

def WaitForObjects(self, type, string):
return WebDriverWait(self.browser, 3).until(EC.presence_of_all_elements_located((type, string)))

def login(self):
self.browser.get("https://www.instagram.com/accounts/login")

Bot = InstagramBot("User", "Passwort")

Bot.login()
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast einen Punkt zu viel:

Code: Alles auswählen

from.selenium.webdriver.support.ui import WebDriverWait
statt

Code: Alles auswählen

from selenium.webdriver.support.ui import WebDriverWait
Das nächste mal bitte die vollständige Fehlermeldung posten, sonst muß man lange nach der richtigen falschen Zeile suchen.
tobi.wld
User
Beiträge: 2
Registriert: Donnerstag 18. Februar 2021, 18:54

Okay, das hat geklappt. Nun habe ich aber direkt das nächste Problem :/
Und zwar ruft der mir die Bilder nicht auf, obwohl er sie eigentlich aufrufen müsste.


Mein Code:

Code: Alles auswählen

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time


class InstagramBot():
	def __init__(self, username, password):
		self.username = username
		self.password = password

		self.browser = webdriver.Chrome("./chromedriver.exe")

	def WaitForObject(self, type, string):
		return WebDriverWait(self.browser, 3).until(EC.presence_of_element_located((type, string)))
	
	def WaitForObjects(self, type, string):
		return WebDriverWait(self.browser, 3).until(EC.presence_of_all_elements_located((type, string)))

	def login(self):
		self.browser.get("https://www.instagram.com/accounts/login")

		fenster_cookies = self.WaitForObject(By.CSS_SELECTOR, "button.aOOlW.bIiDR").click()
		
		login_objects = self.WaitForObjects(By.CSS_SELECTOR, "input._2hvTZ.pexuQ.zyHYP")
		login_objects[0].send_keys(self.username)
		login_objects[1].send_keys(self.password)
		login_objects[1].send_keys(Keys.ENTER)

		fenster_benachrichtigungen = self.WaitForObject(By.CSS_SELECTOR, "button.aOOlW.HoLwm").click()

	def search_hashtag(self, hashtag):
		self.browser.get(f"https://www.instagram.com/explore/tags/{hashtag}/")

		self.browser.execute_script("windows.scrollTo(0, 4000)")

		all_photos = self.WaitForObjects(By.CSS_SELECTOR, "div.v1Nh3.kIKUG._bz0w")

		for photo in all_photos:
			photo.click()
			self.WaitForObject(By.CSS_SELECTOR, "[aria-label = 'Gefällt mir']").click()
			self.WaitForObject(By.CSS_SELECTOR, "[aria-label = 'Schließen']").click()

			time.sleep(5)

		
Bot = InstagramBot("BENUTZERNAME", "PASSWORT")

Bot.login()
Bot.search_hashtag("Hashtag")

Fehlercode:

Code: Alles auswählen

[color=#FF0000]Traceback (most recent call last):
  File "C:\Users\Tobi\Desktop\Instagram Bot\bot.py", line 52, in <module>
    Bot.search_hashtag("HASHTAG")
  File "C:\Users\Tobi\Desktop\Instagram Bot\bot.py", line 37, in search_hashtag
    self.browser.execute_script("windows.scrollTo(0, 4000)")
  File "C:\My_Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 634, in execute_script   
    return self.execute(command, {
  File "C:\My_Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\My_Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: windows is not defined
  (Session info: chrome=88.0.4324.182)[/color]
Ich komme leider wieder nicht drauf, woran es liegen könnte
Benutzeravatar
__blackjack__
User
Beiträge: 14054
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@tobi.wld: Das liegt daran das `windows` in der Zeile ``self.browser.execute_script("windows.scrollTo(0, 4000)")`` in JavaScript im Browser nicht definiert ist. Wieder ein ein-Zeichen-Schreibfehler. 🙂
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten