R: Select 使用 RSelenium 的下拉选项

R: Select drop down option with RSelenium

我正在做一个 web-scraping 项目,我是 RSelenium 的新手,需要帮助从下拉列表中选择一个值。我环顾了 posts,发现在从下拉列表中进行选择时使用 Xpath 非常方便。我能够编写一些代码来激活下拉菜单中的点击,如下所示,但我不知道如何实际强制从特定菜单选项(例如,当前标题)中进行选择。

webElem <- remDr$findElement(using = 'xpath', value = "//*[@data-v-106f7212='']")
webElem$clickElement()

我想指出,当我实际从下拉菜单中进行选择时,第一个 div 括号中的 class="searchCategorySelect" 变为 class="searchCategorySelect catSelected"。此括号中的标题值也会随着 <span class="searchCategorySelectLabel"...> 括号中的值而变化。我用下面的例子说明了这些变化。

我使用 post 的答案作为我代码的灵感。此示例中的 webs-scraping 代码通过使用 Xpath 并选择包含所选季节的 data-option-name 来选择季节。我页面中的 HTML 不是以这种方式构建的,我一直在研究如何根据我的 HTML.

的结构使用 RSelenium 有效地进行选择

任何建议或帮助都将是有用的和感激的。

默认:

<div class="searchCategorySelect" data-v-106f7212="" data-v-c62fe6f4="" title="All Resources">
 <select class="srselect srselectTopbar" data-v-106f7212="" aria-label="Select Search Category">
   <option class="" data-v-106f7212="" value="CurrentSrTitle">Current Title</option>
   <option class="" data-v-106f7212="" value="All">All Resources</option> 
   <option class="" data-v-106f7212="" value="Images">Images</option>
   <option class="" data-v-106f7212="" value="Dictionary">Dictionary</option>
   <option class="" data-v-106f7212="" value="Media">Media</option>
   <option class="" data-v-106f7212="" value="Alerts">Alerts</option>
   <option class="" data-v-106f7212="" value="News">News</option>
   <option class="" data-v-106f7212="" value="EBMcalc">EBMcalc</option>
   <option class="" data-v-106f7212="" value="Help">Help</option>
 </select> 
<div class="searchCategorySelectVisual" data-v-106f7212="" role="presentation">
  <span class="searchCategorySelectLabel" data-v-106f7212="">All Resources</span> 
  <span class="triangleGlyph" data-v-106f7212="">
   <svg class="vsvg" data-v-887bca16="" data-v-106f7212="" focusable="false" aria-label="" role="presentation" aria-hidden="true">
     <use data-v-887bca16="" xlink:href="#white_triangle2" role="presentation"></use> 
     <!----> 
     <!---->
   </svg>
  </span>
 </div>
</div>

选择后:

<div class="searchCategorySelect catSelected" data-v-106f7212="" data-v-c62fe6f4="" title="Current Title">
 <select class="srselect srselectTopbar" data-v-106f7212="" aria-label="Select Search Category">
   <option class="" data-v-106f7212="" value="CurrentSrTitle">Current Title</option>
   <option class="" data-v-106f7212="" value="All">All Resources</option> 
   <option class="" data-v-106f7212="" value="Images">Images</option>
   <option class="" data-v-106f7212="" value="Dictionary">Dictionary</option>
   <option class="" data-v-106f7212="" value="Media">Media</option>
   <option class="" data-v-106f7212="" value="Alerts">Alerts</option>
   <option class="" data-v-106f7212="" value="News">News</option>
   <option class="" data-v-106f7212="" value="EBMcalc">EBMcalc</option>
   <option class="" data-v-106f7212="" value="Help">Help</option>
 </select> 
<div class="searchCategorySelectVisual" data-v-106f7212="" role="presentation">
  <span class="searchCategorySelectLabel" data-v-106f7212="">Current Title</span> 
  <span class="triangleGlyph" data-v-106f7212="">
   <svg class="vsvg" data-v-887bca16="" data-v-106f7212="" focusable="false" aria-label="" role="presentation" aria-hidden="true">
     <use data-v-887bca16="" xlink:href="#white_triangle2" role="presentation"></use> 
     <!----> 
     <!---->
   </svg>
  </span>
 </div>
</div>

我无法测试答案,因为我没有 url,但通常,当我必须从列表中选择一个元素时,我会这样做:

您可以像这样创建一个 xpath:

"//*/option[@value='Images']"

...

"//*/option[@value='Help']"

这可能是工作

remDr$findElement(using = 'xpath', value = "//*/option[@value='Images']")$clickElement()

但它不应该起作用,可能您必须先单击(激活)框才能选择元素 ()。

如果你提供 url 我可以完成我的回答并检查它。