RSelenium:下拉列表中的 Select 选项

RSelenium: Select option from dropdown

我使用 RSelenium 来填写网络表单。对于 select 下拉列表中的选项,我使用以下内容:

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)

我使用以下方法检查 selected 选项是否正确:

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

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

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

我在 ubuntu 上使用 docker 和 firefox 3.0.1。

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

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

我在使用 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 查看器来准确查看浏览器中发生的事情。

如其中一条评论所述,该问题与 RSelenium 无关,而与使用的 docker 有关。我现在使用 chrome docker(独立-chrome),在下拉列表中选择一个选项时没有同样的问题。