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 我可以完成我的回答并检查它。
我正在做一个 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"...>
括号中的值而变化。我用下面的例子说明了这些变化。
我使用 data-option-name
来选择季节。我页面中的 HTML 不是以这种方式构建的,我一直在研究如何根据我的 HTML.
任何建议或帮助都将是有用的和感激的。
默认:
<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 我可以完成我的回答并检查它。