このページのメインメニュー ( linio ) には 11 個のリンクがあります。9 (背景が灰色でホバーするとサブメニューが表示されるもの) のみに関心があります。
9 つのオプションからサブメニューのすべての要素をクリックしたい。望ましいプロセスは次のとおりです。
1.-最初のセクション:「Celulares y Tablets」。
2.-「Celulares y スマートフォン」に移動します。このページをクリックしてご覧ください。
3.-いくつかのデータを抽出します(チェックしました、私はこれを行うことができました)。
4.-「Celulares y Tablets」の次のサブメニューに進みます。それは「アクセソリオセルラー」です。
5.-いくつかのデータを抽出し、次のサブメニューに進みます。このセクションのすべてのサブメニューを終了したら、次の大きなセクション「TV-Audio-y-Foto」に進みます。
などなど、9 つのセクションで。
HTML 構造体
ソースコードを見ると、これにたどり着きました:
1.- メイン ヘッダー: メイン ヘッダーは「nav」タグ内にあります。
<nav id="headerMainMenu>
2.-「nav」タグの内側には「ul」があり、内側のすべての「il」には、9 つのセクションのそれぞれの「id」があります。
<nav id="headerMainMenu>
<ul>
<il id = "category-item-celulares-y-tablets"><a href="..."></il>
<il id = "category-item-celulares-y-tablets"><a href="..."></il>
<il id = "category-item-celulares-y-tablets"><a href="..."></il>
</ul>
</nav>
3.- il 要素内には、必要なリンクを含む div 要素があります<a>
。class="subnav__title" が含まれていることに注意してください。
<nav id="headerMainMenu>
<ul>
<il id = "category-item-celulares-y-tablets"><a href="...">
<div class="col-3">
<a href="..."class="subnav__title">TV y Video</a>
</il>
<il id = "category-item-celulares-y-tablets"><a href="..."></il>
<il id = "category-item-celulares-y-tablets"><a href="..."></il>
</ul>
</nav>
4.- RSelenium を使用して各セクションに移動します。
library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()
startServer()
remDr <- remoteDriver()
remDr$open()
#navigate to your page
remDr$navigate("http://www.linio.com.pe/")
#Accesing the first submenu from "Category Celulares y Tablets
webElem <- remDr$findElement(using = 'css', value = "#category-item-celulares-y-tablets a.subnav__title")
webElem$sendKeysToElement(list(key = "enter"))
しかし、そうすると、次のエラーが表示されます。
> webElem$sendKeysToElement(list(key = "enter"))
Error: Summary: StaleElementReference
Detail: An element command failed because the referenced element is no longer attached to the DOM.
class: org.openqa.selenium.StaleElementReferenceException
※この質問は参考になると思います。しかし、私はそれを取得しません。
**私のCSSは大丈夫だと思います。