我使用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
答案 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查看器来查看浏览器中发生的确切内容。