我正在尝试使用 RSelenium 实现搜索自动化,但遇到了巨大的困难。一切似乎都正常,但每当我运行代码来按下搜索按钮时,它似乎点击了但实际上没有搜索。我在这里搜索了与 RSelenium 相关的问题的历史,但没有找到有效的解决方案......这里聪明的人们有什么建议吗?下面代码的可重现示例,只需加载库并启动您选择的机器/驱动程序。
# Go to License Plate lookup page
mydriver$navigate("https://checktoprotect.org/vin-check/")
# Enter state
dropdown_element <- mydriver$findElement(using = "xpath", value='//*[@id="state-select"]/div[1]')
dropdown_element$clickElement()
state_element <- mydriver$findElement(using = "xpath", value='//*[@id="state-select"]/div[2]/div[23]')
state_element$clickElement()
# Enter License Plate
plate_element <- mydriver$findElement(using = "xpath", value='//*[@id="js-vin-input"]')
plate_element$sendKeysToElement(list("ELX1701"))
# Click submit
submit1_element <- mydriver$findElement(using = 'xpath', value = '//*[@id="js-vin-btn"]')
submit1_element$clickElement()
Sys.sleep(10)
也许是更好、更轻松的方法(
rselenium
是我的敌人):
library(tidyverse)
library(rvest)
session <- "https://checktoprotect.org/vin-check/" %>%
session()
result <- session %>%
html_form() %>%
pluck(1) %>%
html_form_set(state_id = "MI",
plate_number = "ELX1701") %>%
html_form_submit() %>%
read_html() %>%
html_elements("strong , .recalls__no-results p , .clear , .recalls__model") %>%
html_text()
> result
[1] "0 Open Recalls for:"
[2] "2015 GMC SIERRA 1500"
[3] "1GTR1TEH8FZ298242"
[4] "MI - ELX1701"
[5] "New recalls are issued regularly. We recommend checking every 3 months for new recalls on your vehicle."