【SeleniumBasic】 웹 페이지의 요소의 존재를 결정하는 방법?
2437 단어 VBASeleniumbasic
결론: .IsElementPresent를 사용하면 된다.
Selenium의 ChromeDriver에서 사용할 수 있는 '.IsElementPresent' 메서드는
현재의 웹 페이지상에 임의의 요소가 존재하는지의 여부를 Boolean형으로 돌려준다.
if driver.IsElementPresent(myBy.ID("hogehoge")) Then
경위
IsElementPresent를 내가 알기 전에는, 페이지의 요소의 존재의 체크는 FindElementsBy
취득한 오브젝트의 요소수를 체크하면 좋다고 생각했다. 하지만
if driver.FindElementsById("任意のID").Count > 0 Then
라고 기술하면 「NoSuchElement……이하 약어」가 표시되어 VBA 매크로가 중단되어 버렸다.
즉 "그런 요소 없지만?"라는 에러가 Selenium에서 돌아와 VBA의 처리가 멈춰 버린 것 같다.
그래서 에러를 무시하지 않고 정공법으로 웹페이지 요소의 존재 판정하는 방법을 찾기로 했다.
VBA 객체 브라우저를 찾고 있으면 IsElementPresent라는 그와 같은 메소드를 발견했다.
설명문에
Inicates whether a WebElement is present using the given method.
= "지정된 메소드를 사용하여 WebElement가 존재하는지 여부를 나타냅니다. (Google 번역)"
.IsElementPresent 사용법
IsElementPresent 기본.vba driver.IsElementPresent(by As By)
「아마 이런 것일 것이다」라고 예상해, 우선 시험해 본다.
test.vba Sub test()
Dim driver As New ChromeDriver
Dim myBy As New By
URL = "https://www.google.com/?hl=ja"
driver.Get URL
MsgBox driver.IsElementPresent(myBy.ID("hogehoge"))
End Sub
상기 코드를 실행하면 「NoSuchElement…
즉, 요소의 존재 판정은 이하의 코드로 실장하면 된다.
if driver.IsElementPresent(myBy.ID("hogehoge")) Then
그런데 인수의 By 클래스는 Selenium에 탑재 된 클래스입니다.
By의 인스턴스 myBy를 만들어 myBy 안의 「.id」메소드를 사용해 추출용의 태그나 키워드를 지정하는 구조다.
By 클래스의 메소드들
By 클래스는
Provides a mechanism by which to find elements within a document.
= "문서 내의 요소를 검색하는 메커니즘을 제공합니다. (Google 번역)"이라는 객체입니다.
이 By 클래스, 「.id」외
· .Xpath
·.Class
·.Css
·.Tag
· .linktext
· .partiiallinktext
·.Any
· .name
등이 있다.
앞으로 이들을 필요에 따라 시험해보고 싶다.
IsElementPresent 기사는 이상입니다.
Reference
이 문제에 관하여(【SeleniumBasic】 웹 페이지의 요소의 존재를 결정하는 방법?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kawamasa/items/3ac5595ecec771e4ef90
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
if driver.IsElementPresent(myBy.ID("hogehoge")) Then
if driver.FindElementsById("任意のID").Count > 0 Then
driver.IsElementPresent(by As By)
Sub test()
Dim driver As New ChromeDriver
Dim myBy As New By
URL = "https://www.google.com/?hl=ja"
driver.Get URL
MsgBox driver.IsElementPresent(myBy.ID("hogehoge"))
End Sub
if driver.IsElementPresent(myBy.ID("hogehoge")) Then
Reference
이 문제에 관하여(【SeleniumBasic】 웹 페이지의 요소의 존재를 결정하는 방법?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kawamasa/items/3ac5595ecec771e4ef90텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)