2016-08-05 103 views
0

我在Delphi中使用TWebBrowser。 我需要幫助來獲取HTML元素的位置。按位置獲取HTML元素

我需要的元素是在一個框架中。使用elementFromPoint()

Document.elementFromPoint(X, Y) 

我越來越框架本身,但是不知道是它的內部。

我試圖用這個來得到它:

WebBrowser.OleObject.Document.Frames 

但這種傳輸幀時,給了我一個訪問錯誤。

回答

0

使用Document.elementFromPoint()是正確的方法。你沒有考慮到的是HTML在一個分層的DOM樹中被解析,並且不是遞歸的。

您正在要求瀏覽器的頂級文檔在文檔中的給定X,Y座標處找到元素的直接子元素。在這種情況下,這是一個框架元素。

一個框架是一個嵌入窗口,用於存放另一個文檔。您需要訪問框架的Document並要求它在框架內的目標X,Y座標處查找子元素。等等,直到你最終到達最底層的孩子。

注意elementFromPoint()需要客戶座標是相對於你在打電話elementFromPoint()文檔的左上角。因此,當您要搜索子框架的Document時,需要先在框架的Document上調用elementFromPoint()之前從目標X,Y座標中減去框架自己的左上角X,Y座標(在其父文檔中)。

+0

我怎樣才能訪問框架? 'WebBrowser.OleObject.Document.Frames' 這不起作用。訪問錯誤。 – Alexey1245

+0

您已經可以從'elementFromPoint()'訪問幀,它將返回實際的幀元素。你根本不需要使用'Document.Frames'。 –

+0

如何從框架中獲取元素? '幀:= browser.elementFromPoint(X,Y); ... element:= frame.elementFromPoint(frame_x,frame_y);' – Alexey1245