아직 브라우저 작업을 자동화하지 않았습니까? ?

개요



특히 우선도 높지 않은 것이지만, 일일이 브라우저 조작하고 있는 것이 많이 있어요.
비즈니스직에서도 엔지니어라도 브라우저는 반드시 조작할 것입니다.

Selenium이란?



웹 브라우저를 사용하여 웹 애플리케이션을 테스트하는 도구입니다.

보는 편이 빠르다고 생각하므로 스쿠쇼!


  • Qiita 로그인 페이지로 전환
  • 로그인 정보 입력
  • 좋아하는 기사로 전환
  • 좋아요



  • 구체적으로 무엇을 자동화할 수 있는가?


  • 정기적으로 보는 데이터의 취득
  • 정보 미디어
  • SNS
  • EC 사이트

  • 브라우저를 인간이 두드려 수행하는 간단한 흐름 테스트

  • 설치



    미리 Chromedriver 다운로드
    압축을 푼 $home/bin에 배치

    샘플 코드


    require 'dotenv'
    require 'selenium-webdriver'
    
    # ENVの読み込み
    Dotenv.load
    QIITA_LOGIN_EMAIL = ENV['QIITA_LOGIN_USER_NAME']
    QIITA_LOGIN_PW = ENV['QIITA_LOGIN_PW']
    
    # QIITAのログインページのURL
    LOGIN_URL = 'https://qiita.com/'
    
    class QiitaCrawlUser
      attr_reader :driver, :target_url
    
      def initialize(target_url)
        @target_url = target_url
        @driver = Selenium::WebDriver.for :chrome # ここでブラウザ指定
        @driver.manage.timeouts.implicit_wait = 10 # 10.seconds
      end
    
      def like
        login
        puts "like start"
        driver.navigate.to target_url
        parent_classes = driver.find_elements(:class => "likable")[0].attribute('class')
        return if parent_classes.split(" ")[2] == 'liked'
    
        driver.execute_script "document.getElementsByClassName('likable')[0].children[1].click();"
        driver.quit
      end
    
      private
      def login
        puts "login start"
        driver.navigate.to LOGIN_URL #ログイン画面に繊維
    
         driver.find_element(:name, 'identity').send_keys(QIITA_LOGIN_EMAIL)
         driver.find_element(:name, 'password').send_keys(QIITA_LOGIN_PW)
         driver.find_element(:name, 'commit').click
       end
     end
     article_url = "https://qiita.com/tomerun/items/9cb81d7a98150ff22f53"
     QiitaCrawlUser.new(article_url).like
    

    조합하면 편리 Slack



    나는 gem의 'slack-ruby-client'를 사용하여 Slack에 게시하는 것이 좋네요.
    자동화했을 때에 감시나 인지는 필수이므로. . .

    트위터에서 특정 단어를 가져오거나 API를 사용하여 즐거운 시간에 자주 사용합니다.
    require 'slack-ruby-client'
    Slack.configure do |config|
      config.token = ENV['SLACK_API_TOKEN']
    end
    slack_oauth = Slack::Web::Client.new
    slack_oauth.chat_postMessage(channel: '#times_watch_twitter', text: '送りたいメッセージ', unfurl_links: true, as_user: true)
    
    

    unfurl_links: true로 하면 링크가 전개되게 되므로, 링크만 보내는 용도는 자주 사용합니다.

    마지막으로



    하기 때문에 전부 자동화하는 것이 좋고.
    인간이하지 않아도되는 것은 자동화합시다!

    좋은 웹페이지 즐겨찾기