首页 > 解决方案 > RSelenium 单击按钮并下载生成的 csv

问题描述

我是新手RSelenium,我想简单地单击加载数据按钮,然后单击网页中生成的 CSV,但我无法正确找到该元素,这就是我所做的:

library(RSelenium)
library(dplyr)
library(tidyverse)
mydriver <- rsDriver(browser = "chrome", port= 4837L, chromever="93.0.4577.63")
remDr <- mydriver[['client']]
remDr$open()
link_download <- "https://forexsb.com/historical-forex-data"
remDr$navigate(link_download)

这些是我用来选择加载数据按钮的几种方法,但会产生No Such Element Found

load_data_element <- remDr$findElement(using="css selector", value="#btn btn-primary")
load_data_element$clickElement()
load_data_element <- remDr$findElement(using="css selector", value=".btn-load-data")
load_data_element$clickElement()
load_data_element <- remDr$findElement(using="xpath", value="//button[@id='btn-load-data']")
load_data_element$clickElement()
load_data_element <- remDr$findElement(using="xpath", value="//*[@id='btn-load-data']")
load_data_element$clickElement()

这是找到某个元素的唯一选择器,但单击它时仍然没有任何反应:

load_data_element <- remDr$findElement(using="xpath", value="//button")
load_data_element$clickElement()

任何指南都会有所帮助,谢谢!

标签: rautomated-testsrselenium

解决方案


加载数据按钮CSV 生成的下载都在 iframe 中,因此这应该使元素在将焦点切换到 iframe 后可点击:

iframe_detect <- remDr$findElements(using = "xpath", value = "//iframe[@id='data-app-frame']")
remDr$switchToFrame(iframe_detect[[1]])
load_data_element <- remDr$findElement(using="xpath", value="//button[@id='btn-load-data']")
load_data_element$clickElement()

推荐阅读