2017-06-27 13 views
0

我試圖通過Selenium Firefox webdriver找到YouTube視頻的鏈接。現在,我得到一個NoSuchElementException。它正確訪問YouTube頁面,但無法找到第一個鏈接的那個元素。我的目標是能夠將url複製到第一個視頻到一個字符串。無法在YouTube搜索結果頁面上使用Selenium查找YouTube視頻鏈接

String ytlink = "https://www.youtube.com/results?search_query=" + searchTerm; 
    driver.get(ytlink); 
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    By cssSelector = By.cssSelector("#item-section-209606 > li:nth-child(2) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > h3:nth-child(1) > a:nth-child(1)"); 
    WebElement element = driver.findElement(cssSelector); 

我正在使用Intellij並擁有最新版本的硒。 Firefox用於通過使用Inspect元素來定位CSS選擇器 - 複製CSS選擇器。

HTML from YouTube Search Results page

我想找回在href =「/手錶?ν= WPvGqX-TXP0」,並存儲爲一個字符串

+0

你可以考慮歸納爲您要採取的行動的確切手動步驟執行?謝謝 – DebanjanB

+0

一旦我進入YouTube搜索結果頁面,我正嘗試檢索第一個視頻的鏈接並將其存儲在字符串中。但是,所有youtube視頻都使用https://www.youtube.com/watch?v=9YlEpv-FrWU進行設置,因此我需要的唯一信息是v =後的唯一代碼。 「watch?v = 9YlEpv-FrWU」的整個字符串存儲在搜索結果頁面的HTML中。我會在原始帖子中添加一張圖片。 – Alexander

+0

正如下面提到的smit9234,項目部分編號會更改每個搜索,這是我的錯誤出現的位置。如果挑出第一個視頻並不理想,可能會將搜索結果元素存儲在ArrayList中,然後訪問第一個視頻? – Alexander

回答

0

請問您的搜索結果總是返回相同#項目節 - ?如果這是一個自動生成的數字,可能會導致NoSuchElementException。

我可以使用下面的CSS選擇器點擊返回的YouTube搜索的第一個鏈接:

div > div > div.yt-lockup-content > h3 > a 
+0

您提到的CSS選擇器不是唯一的。在我的情況下,它返回了20場比賽。謝謝 – DebanjanB

相關問題