使用R单击网络中的按钮

时间:2019-07-10 13:37:20

标签: r rselenium

我想在网页中自动填写表格。我正在使用RSelenium,可以填写所有表格,但要填写“首选语言”字段。

该网页为:https://ontrack.sgs.com/es-ES/registration-form/

我也无法解决验证码,但是我认为最好的方法是使用API​​。

我试图找到要单击的按钮,然后弹出弹出窗口进行选择,但是我无法做到这一点。

我已经尝试了这种组合以及更多其他组合,但似乎无济于事:

library(RSelenium)

#browser parameters

rD <- rsDriver(port=4571L, browser = "chrome", chromever = "75.0.3770.90") # runs a chrome browser, wait for necessary files to download
remDrv <- rD$client
remDrv$open(silent = TRUE)
url<-paste("https://ontrack.sgs.com/es-ES/registration-form/",sep="")

#### Updating form

webElem <- remDr$findElement(using = 'class', "button")
webElem <- remDrv$findElement(using = "xpath", "//input[@class='button']")
# webElem <- remDr$findElement(using = 'css selector', ".launchentitylookup")
# webElem$clickElement()

webElem <- remDrv$findElement(using = "xpath", "//input[@name = 'ctl00$ctl00$ContentContainer$MainContent$EntityControls$EntityFormControl$EntityFormControl_EntityFormView$sgs_portallanguage_name' ]") 
webElem$sendKeysToElement(list("Español"))
webElem <- remDrv$findElement(using = "xpath", "//input[@name = 'ctl00$ctl00$ContentContainer$MainContent$EntityControls$EntityFormControl$EntityFormControl_EntityFormView$sgs_portallanguage' ]") 
webElem$sendKeysToElement(list("Español"))
webElem <- remDrv$findElement(using = "xpath", "//input[@name = 'ctl00$ctl00$ContentContainer$MainContent$EntityControls$EntityFormControl$EntityFormControl_EntityFormView$sgs_portallanguage_entityname' ]") 
webElem$sendKeysToElement(list("Español"))

我希望能够以西班牙语的形式选择一种语言。

除此之外,能够解决或跳过验证码。

1 个答案:

答案 0 :(得分:1)

我一定很晚了,但这里是查询的答案。请注意,我没有在这里包含验证码位,因为这不是主要问题的一部分。

    library(RSelenium)

#browser parameters

rD <- rsDriver(port=4571L, browser = "chrome", chromever = "87.0.4280.20") # runs a chrome browser, wait for necessary files to download
remDrv <- rD$client
remDrv$open(silent = TRUE)
url<-paste("https://ontrack.sgs.com/es-ES/registration-form/",sep="")

remDrv$navigate(url)
#### Updating form

##open language search
remDrv$findElement(using = "css", "#sgs_portallanguage_entityname+ .input-group-btn .launchentitylookup")$clickElement()
Sys.sleep(3) ## wait for languages to load

#select lanaguage - should match the ones in the table
language<-'Español'

###language path
lang_path<-paste0("//*[contains(concat( ' ', @class, ' ' ), concat( ' ' , 'table-hover', ' ' ))]//*[contains(concat( ' ', @data-value, ' ' ), concat( ' ' , '",language,"', ' ' ))]")  


##selec language - Spanish
remDrv$findElement(using="xpath",lang)$clickElement()


##Press Select button
select_path<-"//*[(@id = 'sgs_portallanguage_lookupmodal')]//*[@class='primary btn btn-primary']"
remDrv$findElement(using="xpath",select_path)$clickElement()

可能晚了,但我希望它可以帮助某人。关键是巧妙地构建xpaths。