0
我试图让使用硒(与Python绑定)目前HTML5视频标签网址:获取当前视频标签网址与硒
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.youtube.com/watch?v=9x6YclsLHN0')
video = driver.find_element_by_tag_name('video')
url = driver.execute_script("return arguments[0].currentSrc;", video)
print url
driver.quit()
的问题是,的url
值将被打印空。为什么是这样的,我该如何解决它?
我怀疑,这是因为在执行脚本并返回的currentSrc
值的视频标签已被初始化之前。我试图添加一个Explicit Wait,但仍然有打印一个空字符串:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 5)
video = wait.until(EC.visibility_of_element_located((By.TAG_NAME, 'video')))
这让我感到我需要做的是asynchronously。可能正在收听media events并等待video
开始播放。
我也很确定currentSrc
应该工作,因为如果我在控制台执行代码并手动等待视频启动 - 我看到它打印视频currentSrc
属性值。
FYI,还试图用java绑定,相同的结果,一个空字符串:
WebDriver driver = new ChromeDriver();
driver.get("https://www.youtube.com/watch?v=9x6YclsLHN0");
WebElement video = driver.findElement(By.tagName("video"));
JavascriptExecutor js = (JavascriptExecutor) driver;
String url = (String) js.executeScript("return arguments[0].currentSrc;", video);
System.out.println(url);
我试了一下在Java中,这是为我工作。当你可以从视频的src属性中获得同样的东西时,为什么要用'currentSrc'? – 2015-02-10 09:37:40
@VivekSingh谢谢你,我已经更新了这个问题。当我使用'src'时,我仍然得到一个空字符串。请参阅关于从控制台运行它的说明。 – alecxe 2015-02-10 17:42:18