Использование Python -Selenium для автоматизации загрузки видео. Я не могу нажать на элемент. Перепробовал все известные мне методы - PullRequest
0 голосов
/ 20 апреля 2020

https://kickassanime.rs - это веб-сайт, который транслирует аниме. Я делаю бот (использующий Selenium в Python), который загружает видео. Я не могу нажать кнопку с текстом ссылки "1080P [Mp4]". Я перепробовал все возможные методы, которые могут помочь, кроме этого элемента.

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys


class autoDownload:

    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get('https://kickassanime.rs')
        self.action = ActionChains(self.driver)

    def sign_in(self):
        self.driver.find_element_by_link_text('Signin/Signup').click()
        sleep(2)
        self.driver.find_element_by_xpath('//*[@id="__BVID__225"]').send_keys('john443255@gmail.com') #Not real real, You can use this one to quick sign-in.
        self.driver.find_element_by_xpath('//*[@id="__BVID__226"]').send_keys('KissAnime@123')
        self.driver.find_element_by_xpath('//*[@id="modalSignIn___BV_modal_body_"]/form/div[4]/div/button').click()

    def search_anime(self):
        self.driver.find_element_by_xpath('//*[@id="anime-search-input"]').click()
        sleep(2)
        self.driver.find_element_by_xpath('//*[@id="anime-search-input"]').send_keys('Black Clover' + Keys.ENTER)
        self.driver.find_element_by_link_text('Black Clover (TV)').click()

    def from_episodes(self):
        self.driver.find_element_by_xpath('//*[@id="__BVID__53"]/tbody/tr[2]/td[1]').click()

    def download(self):
        a = self.driver.find_element_by_link_text(' 1080P [Mp4]')
        a.click()
        '''
        (or...)

        self.action.context_click(a).perform()  # Things later I want to practice
        '''


bot = autoDownload()
bot.sign_in()
bot.search_anime()
bot.from_episodes()
bot.download()

проблема в функция загрузки () .

1 Ответ

2 голосов
/ 21 апреля 2020

Вы не можете найти элемент, потому что этот элемент находится в iframe. И это не простой iframe, а вложенный. Вы должны сначала переключиться на этот вложенный iframe, чтобы перейти по ссылке для скачивания.

    outerFrame=driver.findElement(By.xpath("//iframe[contains(@src,'/mobile2') and @class='embed-responsive-item']"))
    driver.switch_to_frame(outerFrame) //Frame 1
    driver.switch_to_frame("id1-item") // Nested Frame
    driver.find_element_by_css_selector("div#divDownload a").click() //link to download
    driver.switch_to_default_content() // switch back to default page

Надеюсь, это поможет:)

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