I know this question was already answered here but I wouldn't be typing this if it worked for me.
I'm making a bot that gets a random image from Bing and returns it's URL to later send it to Discord. Here's my code so far:
import random
from msedge.selenium_tools import EdgeOptions
from msedge.selenium_tools import Edge
from time import sleep
edge_options = EdgeOptions()
edge_options.use_chromium = True
edge_options.add_argument('headless')
edge_options.add_argument('disable-gpu')
driver = Edge(executable_path='PATH/TO/DRIVER', options=edge_options)
def Image(query):
query.strip()
query.replace(' ', '+')
ImageUrl=f'http://www.bing.com/images/search?q={query}'
driver.get(ImageUrl)
#Wait for page to fully load
sleep(5)
all_images = driver.find_elements_by_class_name('mimg')
random.choice(all_images).click()
sleep(5)
parent = driver.find_element_by_class_name('nofocus')
source = parent.get_attribute('src')
return source
print(Image('cat'))
driver.quit()
When runing the above code I get this:
Traceback (most recent call last):
File "PATH/TO/FILE", line 52, in <module>
print(Image('cat'))
File "PATH/TO/FILE", line 27, in Image
parent = driver.find_element_by_class_name('nofocus')
File "C:\Users\axeld\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 413, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "C:\Users\axeld\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 750, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\axeld\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "C:\Users\axeld\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"class name","selector":"nofocus"}
(Session info: headless MicrosoftEdge=87.0.664.57)
(Driver info: msedgedriver=87.0.664.55 (097391c0e48fdc4ded0e5c4367f7055dc71815ed),platform=Windows NT 10.0.19042 x86_64)
Exception ignored in: <function Service.__del__ at 0x0000021FD11A2820>
Traceback (most recent call last):
File "PATH/TO.FO", line 163, in __del__
File "C:\Users\axeld\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 139, in stop
File "C:\Users\axeld\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 110, in send_remote_shutdown_command
ImportError: sys.meta_path is None, Python is likely shutting down
What is happening?