Search code examples
rautomated-testsrselenium

RSelenium Click Button and download generated csv


I am new in using RSelenium, I wanted to simply click a load data button and then click the generated CSV from a webpage, but I cant find the element properly, here is what I do:

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)

These are several ways of what I use to select the load data button, but produce 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()

And this is The Only Selector which found some element, but still nothing happen when it is clicked:

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

Any guide will be helpful, Thankyou!


Solution

  • The Load Data Button and CSV Generated Download was all in an iframe, so this should make the element clickable after switching focus to 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()