2017-06-27 24 views
0

YouTube動画のリンクをSelenium Firefox webdriverで検索しようとしています。今、私はNoSuchElementExceptionを取得しています。それはYouTubeページを正しく訪問しますが、最初のリンクであるその要素を見つけることはできません。私の目標は、URLを最初のビデオにStringにコピーすることです。YouTube検索結果ページのYouTube動画リンクをSeleniumで検索するときの問題

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を使用しており、最新のバージョンのSeleniumを持っています。 Firefoxは、Inspect Element - copy CSS Selectorを使用してCSSセレクタの場所を特定するために使用されます。

HTML from YouTube Search Results page

私はHREFを取得したいのです=「/ V = 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を引き起こす可能性のある自動生成された番号である場合。

私は、YouTubeの検索で返される最初のリンクをクリックして、次のCSSセレクタを使用することができました:

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

上記のCSSセレクターは一意ではありません。私の場合、それは20試合を返しました。ありがとう – DebanjanB

関連する問題