selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="username"]"}

Merhabalar;

Arkadaşlar amacım webdriver arka planda olacak şekilde instagrama gidip giriş yapmak ama webdriver arka planda çalışınca anladığım kadarıyla bulmasını istediğim öğeleri bulamıyor (username, password, giriş butonu).

Aldığım hata şu;

Traceback (most recent call last):
  File "C:/Users/Asus/Desktop/Selenium deneme.py", line 15, in <module>
    username_box = driver.find_element_by_name("username")
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 496, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="username"]"}
  (Session info: headless chrome=87.0.4280.88)

Selenium u arka planda çalıştırmadığımda ise çalışıyor ama yine de bazı garip mesajlar geliyor onu da bırakıyorum;

[2844:8984:0106/124059.944:ERROR:device_event_log_impl.cc(211)] [12:40:59.944] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: Sisteme ba­l² bir ayg²t al²■m²yor. (0x1F)
[2844:8984:0106/124059.948:ERROR:device_event_log_impl.cc(211)] [12:40:59.947] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: Sisteme ba­l² bir ayg²t al²■m²yor. (0x1F)

Yazdığım kod;

options = webdriver.ChromeOptions()    

options.add_argument('--headless')

driver = webdriver.Chrome(options=options)

driver.get("https://www.instagram.com")

sleep(5)

username_box = driver.find_element_by_name("username")

password_box = driver.find_element_by_name("password")

blue_buton = driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[3]/button/div')

username_box.send_keys("xxxxx")

password_box.send_keys("xxxxxx")

blue_buton.click()
1 Beğeni

sleep yerine driver.implicitly_wait kullanmalısınız.

yerine

from selenium.webdriver.chrome.options import Options
chrome_opt.headless = True

Kodlarını deneyebilirmisiniz.

(Telefonda olduğum için deneyemedim.)

1 Beğeni

Maalesef durum hala aynı.

Kodunuz çalışıyor, muhtemelen chrome ile alakalı bir durum. Şurada çözüm için öneriler sunulmuş bakmanızda fayda var.
Firefox kullanıyorum, denedim sıkıntı yok:

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get('https://www.instagram.com')
time.sleep(5)
username_box = driver.find_element_by_name("username")
password_box = driver.find_element_by_name("password")
blue_buton = driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[3]/button/div')
username_box.send_keys("x")
password_box.send_keys("x")
blue_buton.click()

Arka planda çalışması için:

pip3 install xvfbwrapper
sudo apt-get install firefox xvfb
from selenium import webdriver
from xvfbwrapper import Xvfb
import time

display = Xvfb()
display.start()

driver = webdriver.Firefox()
driver.get('https://www.instagram.com')
time.sleep(5)
username_box = driver.find_element_by_name("username")
password_box = driver.find_element_by_name("password")
blue_buton = driver.find_element_by_xpath('//*[@id="loginForm"]/div/div[3]/button/div')
username_box.send_keys("x")
password_box.send_keys("x")
blue_buton.click()

display.stop()