1

我在 python 中用 selenium 编写了一个程序。我的目标是在页面中找到视频的 src。这是我的代码

video_element = chrome_driver.find_element_by_tag_name("video")
video_src = video_element.get_attribute("src")

当我尝试检查时,video_src我得到一个空字符串,但是如果我time.sleep(1)在尝试获取 src 之前输入,我会得到视频的真实链接。我试图使用WebDriverWait而不是time.wait像这样

video_element = WebDriverWait(chrome_driver, 3).until(
            expected_conditions.element_to_be_clickable((By.TAG_NAME, "video"))
        )

但是我找不到任何等到 src 标签被真实链接填充的条件。有没有办法用硒而不是时间来等待?(随着时间的推移,不保证 src 会被填满)

4

3 回答 3

2

你可以试试下面的。

video_element = WebDriverWait(chrome_driver, 3).until(
            expected_conditions.presence_of_element_located((By.XPATH, "//video[not(@src='')]"))
        )
于 2020-03-25T20:47:18.140 回答
2

在您必须切换到 iframe 之前,请尝试以下解决方案

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait as Wait
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
driver = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
driver.get('https://www.thewatchcartoononline.tv/www-working-episode-1-english-subbed')
driver.switch_to.frame("anime-js-0")
video_element = WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.ID, "video-js_html5_api")))
val = video_element.get_attribute("src")
print val

输出: 在此处输入图像描述

于 2020-03-25T20:47:42.237 回答
1

要提取src属性的值,您必须将WebDriverWait引入所需的值,visibility_of_element_located()并且可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.TAG_NAME, "video"))).get_attribute("innerHTML"))
    
  • 使用XPATH

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//video"))).get_attribute("src"))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
于 2020-03-25T21:03:06.067 回答