【问题标题】:How to select dropdown box using Rselenium?如何使用 Rselenium 选择下拉框?
【发布时间】:2017-04-11 00:26:34
【问题描述】:

我对英超联赛的统计数据很感兴趣。所以,我尝试从这个官方网站https://www.premierleague.com/stats/top/players/total_pass获取数据

我正在使用 R 和 RSelenium 包。

library(rvest)
library(httr)
library(RSelenium)

remDr <- remoteDriver(port = 4445L)
remDr$open()
remDr$navigate('https://www.premierleague.com/stats/top/players/total_pass')
getsource <-remDr$getPageSource()
name<- read_html(getsource[[1]]) %>% html_nodes("strong") %>% html_text()

但我遇到了一些问题。有一些类别的数据,例如赛季、位置、俱乐部等。

所以,我认为我可以根据这些类别获取数据。但是我不知道如何在这个站点中使用 Rselenium 在下拉框中选择特定的东西。

我认为filenElementclickElement 是对此有用的函数。但是,我不知道应该如何处理这些函数来选择具体的条件,例如 2016/17 赛季和守门员位置。

请给我一个建议。

【问题讨论】:

    标签: r selenium


    【解决方案1】:

    使用以下代码,我能够让浏览器选择 2014/15 赛季。您需要检查各种下拉菜单的内容并根据需要展开。

    rD <- rsDriver(port=4444L,browser="chrome")
    remDr <- rD$client
    
    #navigate to main page
    remDr$navigate('https://www.premierleague.com/stats/top/players/total_pass')
    
    #find 'filter by season' box and click it
    webElem <- remDr$findElement(using = 'xpath', value = "//*[@data-dropdown-block='FOOTBALL_COMPSEASON']")
    webElem$clickElement()
    
    #find 2014/15 season and click it
    webElem1 <- remDr$findElement(using = 'xpath', value = "//*[@data-option-name='2014/15']")
    webElem1$clickElement()
    

    【讨论】:

    • 感谢您的评论。但是我收到了这个错误信息。错误:摘要:ElementNotVisible 详细信息:无法完成元素命令,因为该元素在页面上不可见。类:org.openqa.selenium.ElementNotVisibleException 更多详细信息:运行 errorDetails 方法 我的代码有什么问题?
    • 在这种情况下,您需要先点击下拉框 - 我已经修改了上面的代码来说明这一点。然后您可以像以前一样getPageSource 并提取您需要的数据。您也可以在单击下拉框后执行此操作以提取选项列表,例如,如果您想使用它们来构建一个循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    相关资源
    最近更新 更多