RSelenium:从下拉列表中选择选项

时间:2016-11-30 15:11:32

标签: r rselenium

我使用RSelenium填写网络表单。要从下拉列表中选择一个选项,请使用以下命令:

xpathoption <- paste0("//select[@id = '",samplepatient[p,'name'],"']/option[",samplepatient[p,'value'],"]")

optionelem <- remDrv$findElement(using = "xpath", xpathoption)
selectelem <- remDrv$findElement(using = "xpath"
                   , paste0("//select[@id = '",samplepatient[p,'name'],"']"))
optionelem$clickElement()
selectelem$screenshot(display = T)

我使用以下内容检查是否选择了正确的选项:

remDrv$findElement(using = "xpath", paste0("//select[@id = '",samplepatient[p,'name'],"']"))$getElementAttribute("value")[[1]]

我遇到的问题是当clickElement()命令运行两次时,最后一个命令的结果会发生变化。我还用screenshot()检查了结果。它还显示在使用clickElement()命令两次时切换到不同的选项。

是否有不同的方法从下拉列表中选择选项,即不创建此行为?

我使用firefox 3.0.1在ubuntu上使用docker。

表单来自我想要使用的计算器。要打开表单本身,您需要先检查免责声明,如下所示:

remDrv$navigate('http://riskcalculator.facs.org/RiskCalculator/')

remDrv$findElement(using = "xpath", "//input[@id = 'chkDisclaimer']")$clickElement()
Sys.sleep(1) 
remDrv$findElement(using = "xpath", "//input[@id = 'btnContinue']")$clickElement()
Sys.sleep(1)

免责声明后的可复制示例:

#select age group
optionelem <- remDrv$findElement(using = "xpath", "//select[@id = 'AgeGroup']/option[3]")
selectelem <- remDrv$findElement(using = "xpath", "//select[@id = 'AgeGroup']")
#first attempt
optionelem$clickElement()
selectelem$getElementAttribute("value")
# result = 3
#second attempt
optionelem$clickElement()
selectelem$getElementAttribute("value")
# result = 1

2 个答案:

答案 0 :(得分:2)

正如其中一条评论所述,该问题与RSelenium无关,但使用的是docker。我现在使用镀铬码头工具(独立镀铬),在下拉列表中选择一个选项时没有同样的问题。

答案 1 :(得分:1)

使用clickElement选择选项时,我没有遇到任何问题 例如:

remDrv$navigate('http://riskcalculator.facs.org/RiskCalculator/')
remDrv$findElement("id", "chkDisclaimer")$clickElement()
Sys.sleep(1) 
remDrv$findElement("id", "btnContinue")$clickElement()
Sys.sleep(1)
#select age group
ageElems <- remDrv$findElements("css", "#AgeGroup option")
ageElems[[3]]$clickElement()
#select Diabetes
diaElems <- remDrv$findElements("css", "#Diabetes option")
diaElems[[2]]$clickElement()
# Select Gender
genderElems <- remDrv$findElements("css", "#Gender option")
genderElems[[1]]$clickElement()

在Docker中运行时,您可以使用“debug”图像和VNC查看器来查看浏览器中发生的确切内容。

相关问题