Search code examples
pythonseleniumbotsinstagramgeckodriver

find_element_by_xpath unable to locate


im trying to start a bot to accept cookies on instagram.

I have been succesful using this code

from time import sleep
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(5)

browser.get('https://www.instagram.com/')

sleep (5)
accept_cookies = browser.find_element_by_xpath("//button[text()='Accept All']")
accept_cookies.click()

This works as expected however when converted to a function in a seperate file it seems to cause an issue.

File A now looks like

from File_B import click_accept_cookies
from time import sleep
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(5)

browser.get('https://www.instagram.com/')

click_accept_cookies()

File_B looks like

from time import sleep
from selenium import webdriver

browser = webdriver.Firefox()
browser.implicitly_wait(5)

def click_accept_cookies():
    sleep(5)
    accept_cookies = browser.find_element_by_xpath("//button[text()='Accept All']")

    accept_cookies.click()

The error i run into is Unable to locate element: //a[text()='Log in'] Can anyone see the mistake?

Edit: Thank you for everyone who responded, i made it work due to your suggestions. Stack overflow has the best community.


Solution

  • Pass browser variable as parameter to "click_accept_cookies" function. Remove below lines from file B

    browser = webdriver.Firefox()
    browser.implicitly_wait(5)