my goal is to access the IMDB site from a different website and try to get movie genres.
I can do this when I use the direct Xpath of the IMDB button on the website I redirected.
driver.get("http://www.imdb.com/title/tt0118564/")
However, when I do it in the code I want to use for a loop, it gives a TimeoutException error.
i = 3
driver.find_element_by_xpath("/html/body/div/div[2]/div[1]/p[{}]/a".format(i)).click()
driver.find_element_by_xpath("/html/body/div/div[2]/div[1]/p[1]/a").click()
What am I doing wrong?
NOTE: IMDB page of the movie genres I want to get: https://www.imdb.com/title/tt0118564/
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import selenium.common.exceptions as selexcept
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
genres0, genres1, genres2, genres3 = "","","",""
driver = webdriver.Chrome()
driver.get("https://sfy.ru/scripts") # main website
#driver.get("http://www.imdb.com/title/tt0118564/") # website for genres
i = 3
driver.find_element_by_xpath("/html/body/div/div[2]/div[1]/p[{}]/a".format(i)).click()
driver.find_element_by_xpath("/html/body/div/div[2]/div[1]/p[1]/a").click()
genres = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.XPATH, "//h4[.='Genres:']/following-sibling::a")))
print(", ".join([genre.text for genre in genres]))
print(genres)
ERROR:
---------------------------------------------------------------------------
TimeoutException Traceback (most recent call last)
<ipython-input-62-ff9c6618ff0f> in <module>
25
26
---> 27 genres1 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[@id='titleStoryLine']/div[4]/a[1]"))).text
28 genres2 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[@id='titleStoryLine']/div[4]/a[2]"))).text
29 genres3 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//*[@id='titleStoryLine']/div[4]/a[3]"))).text
~\Anaconda3\lib\site-packages\selenium\webdriver\support\wait.py in until(self, method, message)
78 if time.time() > end_time:
79 break
---> 80 raise TimeoutException(message, screen, stacktrace)
81
82 def until_not(self, method, message=''):
TimeoutException: Message: