Как найти элемент сайта по идентификатору с помощью Selenium Python? - PullRequest
2 голосов
/ 31 марта 2019

Я пытаюсь создать скрипт, который должен загрузить данный эпизод .Например, я хочу открыть магнит эпизода 6 в 720p.Однако Selenium не находит элемент, даже если id является правильным.

Сначала я попытался использовать Xpath , но я получаю ту же ошибку.

Попытка

def downloadEpisode(episode):
    if episode > 9:
        id = str(episode)
    else:
        id = "0" + str(episode)
    #xpath = "//*[@id='" + id + "-720p']/span[2]/a" copied it using element inspect
    driver = webdriver.Chrome()
    driver.get("https://horriblesubs.info/shows/black-clover/")

    element1=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, id)))

    #also tried these two below
    #element1 = driver.find_element_by_id(id)
    #element1 = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,xpath)))

    element2 = element1.find_element_by_id(id + "-720p")
    element3 = element2.find_element_by_link_text("magnet")

    actions = ActionChains(driver)
    actions.click(element3).perform()

Как мне решить эту проблему?

1 Ответ

1 голос
/ 31 марта 2019

Похоже, вы столкнулись с очень распространенной, но полностью разрешимой проблемой. Сначала необходимо прокрутить представление (например, прокрутить страницу вниз), прежде чем пытаться выполнить действие щелчка по элементу, чтобы он затем стал видимым для DOM. Либо с actionchains, либо execute_script.

actions.move_to_element(element).perform()

Этот старый пост должен сделать вещи немного понятнее, приятель :) Прокрутка до элемента с помощью веб-драйвера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...