#python #selenium #xpath
#python #селен #xpath
Вопрос:
selenium и xpath. У меня есть скрипт на python, который использует selenium для извлечения источника видео с веб-сайта фильма. Я могу заставить скрипт воспроизводить видео с помощью Selenium, но хочу очистить ссылку src на видеофайл MP4. Я думаю, что мой синтаксис xpath неверен.
**** Code ******
# Load selenium components
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time
browser = webdriver.Chrome(executable_path=r"C:\temp\chromedriver.exe")
## Link to the movie as an example
url = "https://vw.ffmovies.sc/film/fatman-2020/watching/?server_id=3"
browser.get(url)
element = WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='player']")))
clickable = browser.find_element_by_id("player")
clickable.find_element_by_xpath('.//*').click()
browser.switch_to.frame("iframe-embed")
time.sleep(5)
### This is where I am stuck.. It cannot find the xpath element....
##########################################################################################
## I am getting the xpath wrong. I want the video link to be stored in the link variable.
link=browser.switch_to.frame(browser.find_element_by_xpath('//*[@id="player"]/iframe').get_attribute('src'))
## Getting error in the above code ^^^^^^^^^^^^^^^^^^^^^^^^^^^
browser.close()
Любые советы будут высоко оценены. Спасибо.
Комментарии:
1. Добавьте html-код, почему вы используете iframe в локаторе
2. покажите html-код для элемента, который содержит URL.
Ответ №1:
id='player'
находится за пределами iframe, так что вам не следует использовать его в вашем xpath.
Таким образом, вы должны рассматривать iframe как корень вашего нового контекста.
Вместо browser.find_element_by_xpath('//*[@id="player"]/iframe').get_attribute('src')
того, чтобы пытаться:
browser.find_element_by_xpath('.//video/source').get_attribute('src')
Комментарии:
1. Большое вам спасибо. Это работает. Оцените подробный ответ, чтобы я мог улучшить свои навыки кодирования.
2. Каких подробностей вы ожидаете?
3. Я имел в виду, что это хорошо для меня, чтобы понять.. В нем были все подробные шаги. Спасибо!!!