TWebbrowser 구성 요소와 일부 버튼을 사용하고 있습니다. 이것은 지금까지는 잘 작동하지만, 한 번의 절차 동안 웹 사이트의 버튼을 클릭하여 추가 정보를 표시하고자 할 때 클릭해야합니다. 델파이 : Webbrowser.Document -> ID로 요소의 존재 확인
그래서 나는이있어 :WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-0').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-1').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-2').Click();
가 그럼 난에 클릭하여 다음 세 가지 요소를 표시하는 웹 사이트에 버튼을 클릭합니다. 지금까지 문제는 없었지만 버튼을 클릭 한 후 사이트는 세 개의 요소를 표시하는 데 몇 초가 걸렸습니다.
내 문제 : 버튼을 클릭 한 직후에 요소를 클릭하려고하면이 이름을 클릭 할 요소가 없다는 오류가 발생합니다. 물론 내 프로그램을 몇 초만 기다려야 할 수도 있습니다. (자세히) 확실하게 클릭 한 다음 시도해보십시오. 그렇지만 시간을 낭비하고 싶지는 않습니다. 내 질문은 확인 방법은 있습니까? 이름)이 TWebbrowser 안의 문서에 존재합니까?
는'OnDocumentComplete' 이벤트를 처리하고'pDisp = TWebBrowser이 (보낸 사람) .ControlInterface' (즉 문서가 "준비"을 의미) 경우가 확인합니다. 그렇다면 문서 탐색을 시작하십시오. 어떤 요소가 존재 하는지를 검사하기 위해서'GetElementByID'에 의해 반환 된 참조가'Assigned'인지 단순히 검사 할 수 있습니다. – Victoria
이것은 또한 작동하지 않습니다. 어쩌면 당신의 대답은 맞을지 모르지만 TWebbrowser의 몇 가지 의심스러운 행동에 직면했습니다 : 저는 버튼을 수동으로 클릭하고 원하는 요소가 나타날 때까지 몇 초 기다렸습니다. 그런 다음 'WebBrowser1.OleObject.Document.All.Item (i) .ID);'을 사용하여 모든 ID를 나열하고 처음 세 요소가 정상적으로 표시되었지만 다음 (네 번째) 항목은 여전히 나열되지 않았습니다. 일반 브라우저 (크롬 및 파이어 폭스)는 네 번째 요소가 있어야한다고 말했습니다. 내 TWebbrowser는 알 수없는 이유로 사이트의 변경 사항을 무시하는 것 같습니다. – qGold
사이트는 때로는 첫 번째 숫자 '0'을 세 번 사용하지만 때로는 네 번째 또는 다섯 번까지 첫 번째 숫자를 늘리기도합니다.이 사이트에 대한 임의의 데이터를 테스트 한 결과, 나는 그것이 매번 이것을 할 것이라고 생각 했으니 까 그렇지만 그렇지 않다. 죄송합니다.이 질문에 대해서는 질문했지만이 문제는 TWebbrowser 구성 요소의 문제라고 생각했습니다. - – qGold