【发布时间】:2013-04-06 21:32:54
【问题描述】:
我尝试在 YouTube 上使用 Selenium WebDriver for FireFox 自动执行一项任务。
我在 YouTube 上创建了一个播放列表,我想获取该播放列表中所有视频的超链接。
html 看起来像这样:
<a href="/watch?v=StJLvbPIvTw&list=PLt5xbw4ekDQssXxfaIfh_XbKe-iuOTZo_&index=1" title="ADELE - Skyfall (Official video HD)" class="yt-uix-tile-link yt-uix-sessionlink" data-sessionlink="feature=plpp_video&ei=RodgUazfOKWlhAHOioGoDA">
<span class="title video-title" dir="ltr">ADELE - Skyfall (Official video HD)</span>
</a>
我尝试使用find_by_partial_link_text 查找元素但失败了。
我的最终目的是获取播放列表中所有视频的超链接,以便我可以将其传递给下一个脚本以单独访问它们。 任何帮助将不胜感激。
注意:我在 SO 中找到了与 SO 类似的答案,但此处提供的答案是迭代 WebElement 对象,在我的情况下会引发异常,说对象不可迭代。
编辑:
def init():
d = webdriver.Firefox()
d.implicitly_wait(15)
print "in init"
return d
def youtube(d, uname, pwd):
link_list = []
d.get("http://www.youtube.com")
print "in you"
signin = d.find_element_by_partial_link_text("Sign in")
signin.click()
email = d.find_element_by_id("Email")
passwo = d.find_element_by_id("Passwd")
submit = d.find_element_by_id("signIn")
email.send_keys(uname)
passwo.send_keys(pwd)
submit.click()
list = d.find_element_by_partial_link_text("Playlists")
list.click()
play = d.find_element_by_partial_link_text("Fav songs")
play.click()
print play
link_list = d.find_element_by_xpath('//*[@id="playlist-pane-container"]/div[1]')
print "done"
print link_list # prints None here
hr = link_list.get_attribute("css=a@href")
print hr
【问题讨论】:
-
你真的需要展示你尝试过的东西。
-
@RossPatterson 添加了我尝试过的代码。任何意见将不胜感激。
-
您有 3 次使用
find_element_by_partial_link_text()。它们都没有与您显示的 HTML 片段相匹配。 -
@RossPatterson 我第一次尝试使用 'find_element_by_partial_text()' 来做到这一点,但它没有帮助,所以我尝试使用 xpath 在页面上查找所有类似的元素所以问题stackoverflow.com/questions/8121886/… 但我得到一个空列表。
-
投反对票的具体原因有哪些?
标签: python windows firefox selenium selenium-webdriver