Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Watir를 사용하여 Ruby에서 웹 브라우저를 제어하는 ​​방법

Ruby로 웹 브라우저를 제어할 수 있다는 사실을 알고 계셨습니까?

Watir 보석을 사용하면 이 작업을 수행할 수 있습니다.

최신 브라우저의 모든 기능과 함께 제공됩니다. :

  • 페이지에서 보이는 영역의 스크린샷을 찍을 수 있습니다.
  • 개발자 도구를 수동으로 열고 코드를 입력하지 않고도 모든 페이지에서 자바스크립트를 실행할 수 있습니다.
  • 링크를 찾고 클릭하고 입력 필드에 텍스트를 채울 수도 있습니다.

이 모든 것은 Watir &Selenium 프로젝트 덕분에 사용할 수 있습니다.

몇 가지 코드 예제를 살펴보겠습니다!

브라우저 시작

먼저 다음과 같은 브라우저 개체를 만듭니다.

require 'watir'

browser = Watir::Browser.new

그러면 지금 제어할 수 있는 빈 Chrome 창이 열립니다(설치되어 있다고 가정).

예를 들어 :

browser.goto("rubyguides.com")

Chrome이 이 URL로 이동하고 URL을 직접 입력한 것처럼 페이지가 로드됩니다.

지금 :

일반적으로 웹사이트에서 하던 모든 작업을 마우스와 키보드로 할 수 있습니다.

링크를 찾아 클릭하는 것과 같습니다.

:

browser.link(text: "All Posts").click

Watir로 요소를 찾는 방법

다음과 같은 속성으로 요소를 찾을 수 있습니다.

  • 텍스트
  • 수업
  • 아이디

이러한 요소에는 HTML 이름과 일치하는 메서드가 있으므로 H1 태그를 찾는 경우 메서드는 h1입니다. , 단락의 경우 메서드는 p입니다. &이미지의 경우 메소드는 img입니다. 또는 images .

:

browser.h1(text: "Ruby Post Index")

메소드 이름의 복수형을 사용하여 요소 목록을 가져올 수도 있습니다.

:

browser.links
browser.images
browser.h2s

이것은 Watir::AnchorCollection을 줄 것입니다. 각각과 같은 메서드에 응답하는 개체, 매핑 및 주입.

:

browser.links.map(&:href)

시간 초과 및 존재하지 않는 요소를 처리하는 방법

요소가 아직 페이지에 로드되지 않았거나 페이지가 변경되었기 때문에 요소가 존재하지 않을 수 있습니다.

Watir가 요소를 찾을 수 없는 경우 어떻게 되나요? ?

시간 초과가 있습니다.

기본적으로 30초이지만 변경할 수 있습니다.

Watir.default_timeout = 10

만료되면 Watir::Exception::UnknownObjectException이 발생합니다. 예외.

하지만 이것을 처리하는 다른 방법이 있습니다!

요소를 클릭하거나 다른 작업을 수행하기 전에 요소가 있는지 확인할 수 있습니다.

방법은 다음과 같습니다. :

link = browser.link(text: 'Guides')

if link.present?
  link.click
end

스크린샷을 찍는 방법

브라우저를 열고 페이지를 로드하면 해당 페이지의 스크린샷을 찍을 수 있습니다.

좋아요 :

browser.screenshot.save("/tmp/screen.png")

현재 뷰포트의 이미지를 저장합니다.

스크립트 실행

브라우저에서 자바스크립트를 실행하여 페이지의 현재 상태에 영향을 주거나 해당 페이지에 정의된 자바스크립트 함수를 호출할 수 있습니다.

방법은 다음과 같습니다. :

browser.execute_script "alert('bacon')"
# nil

결과는?

"bacon"이라는 단어가 있는 경고 창 🙂

코드 실행 및 결과 얻기 :

browser.execute_script "return 1 + 1"
# 2

입력 필드를 채우는 방법

입력 필드를 채우는 두 단계는 다음과 같습니다.

  1. 요소 찾기
  2. 키 보내기

예시 :

browser.input(id: "search").send_keys("orange juice")

이제 제출 버튼을 찾아 클릭해야 합니다.

유용한 Watir 방법 및 팁

Watir를 사용하면 몇 가지 유용한 방법에 액세스할 수 있습니다.

예:현재 URL 가져오기 :

browser.url

열린 탭 목록 가져오기 :

browser.windows

현재 창 최대화 :

browser.window.maximize

현재 페이지의 HTML 및 텍스트 가져오기 :

browser.text
browser.html

또한 부분적으로 일치하는 요소를 찾고 싶다면 정규 표현식을 사용할 수 있는 팁이 있습니다.

좋아요 :

browser.p(text: /ruby/)

요약

이 튜토리얼에서는 웹 브라우저를 원격 제어하여 작업을 자동화하고 페이지에서 정보를 추출할 수 있는 Ruby gem인 Watir에 대해 배웠습니다.

이 기사가 도움이 되셨다면 더 많은 사람들이 찾을 수 있도록 공유해 주세요!

읽어주셔서 감사합니다.