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
입력 필드를 채우는 방법
입력 필드를 채우는 두 단계는 다음과 같습니다.
- 요소 찾기
- 키 보내기
예시 :
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에 대해 배웠습니다.
이 기사가 도움이 되셨다면 더 많은 사람들이 찾을 수 있도록 공유해 주세요!
읽어주셔서 감사합니다.