如何使用Selenium python通过ID查找网站元素?

时间:2019-03-31 19:06:57

标签: python selenium-chromedriver

我正在尝试创建一个应下载给定episode的脚本。例如,我想以720p打开第六集的磁铁。但是,即使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 个答案:

答案 0 :(得分:1)

听起来您遇到了一个非常普遍但完全可以解决的问题。在尝试对元素执行单击操作之前,您首先需要滚动到视图(如向下滚动页面),这样它才对DOM可见。使用动作链或execute_script。

actions.move_to_element(element).perform()

这个较早的帖子应该使事情更清晰一些:) Scrolling to element using webdriver?