我試圖使用Selenium WebDriver
爲YouTube上的FireFox自動執行任務。如何使用Selenium WebDriver在網頁上查找元素?
我在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("[email protected]")
print hr
你真的需要展示你的嘗試。 –
@RossPatterson添加了我試過的代碼。任何投入將非常感激。 – abhi
你有3種使用'find_element_by_partial_link_text()'。他們沒有一個來到與您展示的HTML片段相匹配的地方。 –