RSelenium中等待元素可见并点击的问题求助
解决RSelenium中复选框
clickElement()无效的问题 问题场景
使用RSelenium操作目标页面时,通过findElement()定位到id为Terminos的复选框,调用clickElement()方法无法完成勾选,但手动勾选后isElementSelected()能正确返回选中状态。元素的isElementEnabled()返回TRUE,说明元素本身处于启用状态,但常规点击不生效。
解决方案
通过executeScript()直接执行JavaScript代码触发复选框的点击事件,绕过Selenium原生点击可能遇到的元素遮挡、事件绑定优先级等问题。具体是将定位到的元素作为参数传入JS代码,调用元素原生的click()方法。
修改后的代码示例
library(RSelenium) library(netstat) rd = rsDriver(browser = "chrome", chromever = NULL, port = free_port(), verbose = FALSE) remo_dr = rd$client remo_dr$navigate("https://analisis.cis.es/formulario.jsp?dwld=/Microdatos/MD3318.zip") clickbox = remo_dr$findElement(using = "id", value = "Terminos") clickbox$isElementEnabled() clickbox$isElementSelected() # 替换原clickElement(),使用JS触发点击 remo_dr$executeScript("arguments[0].click();", list(clickbox)) clickbox$isElementSelected()
执行结果
> clickbox$isElementEnabled() [[1]] [1] TRUE > clickbox$isElementSelected() [[1]] [1] FALSE > remo_dr$executeScript("arguments[0].click();", list(clickbox)) > clickbox$isElementSelected() [[1]] [1] TRUE
原环境信息
R version 3.6.3 (2020-02-29) Platform: x86_64-apple-darwin15.6.0 (64-bit) Running under: macOS 10.16 Matrix products: default BLAS: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] netstat_0.1.1 RSelenium_1.7.7 loaded via a namespace (and not attached): [1] Rcpp_1.0.10 XML_3.99-0.3 binman_0.1.2 ps_1.7.2 assertthat_0.2.1 rappdirs_0.3.3 bitops_1.0-6 R6_2.5.1 [9] jsonlite_1.8.4 semver_0.2.0 httr_1.4.2 curl_4.3 xml2_1.3.3 tools_3.6.3 wdman_0.2.5 processx_3.8.0 [17] yaml_2.2.1 compiler_3.6.3 askpass_1.1 caTools_1.18.2 openssl_1.4.3
内容的提问来源于stack exchange,提问作者Fran Villamil
相关产品推荐
相关产品推荐

