RSelenium no GitHubActions

Boa tarde pessoal,
Estou tentando automatizar um script em R via github actions que faz uso do pacote RSelenium (estou usando ele pois foi a única maneira que consegui para extrair um texto de uma página da web). No workflow coloquei para usar uma máquina ubuntu-latest e tentei instalar o firefox (uso ele no RSelenium), entretanto não estou tendo sucesso. Aparece a seguinte mensagem de erro:

O que eu poderia fazer para que funcionasse? Vou enviar também meu arquivo yml.

name: Scraping TriTrypDB using R

on:
  workflow_dispatch:
  schedule:
    - cron: "0 12 * * MON"

jobs:
  scrape:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - uses: r-lib/actions/setup-r@v2

      - uses: r-lib/actions/setup-r-dependencies@v2
        with:
          packages: |
            any::httr
            any::dplyr
            any::stringr
            any::purrr
            any::RSelenium
            any::xml2
            any::data.table
      - name: Baixar dados
        run: |-
          sudo apt install firefox
          Rscript "tritrypDT.R"
      - name: Commit e Push
        run: |-
          git config user.name "github-actions"
          git config user.email "github-actions@github.com"
          git add -A
          timestamp=$(date -u)
          git commit -m "Atualizado (pelo R) em: ${timestamp}" || exit 0
          git push

Agradeço desde já!

Bom dia, moça.Você está usando a imagem ubuntu-latest e ele parece não está reconhecendo o firefox que você tenta instalar. Aparentemente tenta usar uma outra imagem para confirmar essa suspeita minha. Abaixo uma outra imagem em que o usuário instalou nela o firefox.

https://hub.docker.com/layers/grodrigo/ubuntu-firefox/latest/images/sha256-bf992610a2d2edb2898f8ac1365d980185da393938dbc924d72fd562bc7bb706?context=explore

Olá!

@HumbertoJr acho que o problema não é que o Firefox não estava instalado, mas sim que a gh action estava tentando abrir o Firefox, mas como a sessão não tem interface gráfica, isso não funciona.

@lailaviana, para funcionar nesse caso, é preciso usar a imagem do Docker do selenium. Com o docker, o selenium é servido dentro do docker, sem a necessidade de instalar X11 ou qualquer coisa de interface gráfica. Geralmente é assim que rodamos quando usamos selenium em um servidor.

No github actions, eu não sei se tem uma maneira mais esperta de baixar e rodar a imagem docker (algum cache, por ex), mas depois de algumas tentativas, cheguei em uma versão funcional:

library(RSelenium)

system("docker pull selenium/standalone-chrome", wait=TRUE)
Sys.sleep(5)
system("docker run -d -p 4445:4444 selenium/standalone-chrome", wait=TRUE)
Sys.sleep(5)

remDr <- remoteDriver("localhost", 4445L, "chrome")
remDr$open()
remDr$navigate("https://phptravels.com/demo")
html <- remDr$getPageSource()
writeChar(html[[1]], "result.html")

Aqui estou usando chrome, mas dá na mesma com firefox.

Link do repo: GitHub - jtrecenti/actionSelenium: exemplo de action usando selenium

Qualquer problema pode mandar!

Oi Júlio e Humberto, obrigada pelas respostas.
Júlio, tentei rodar e deu algum erro. Aí acabei preferindo arrumar uma “gambiarra” pra conseguir extrair os dados que preciso sem ter que usar o RSelenium e funcionou.
Obrigada novamente!

2 curtidas