C 通過遍歷IFrame訪問頁面元素

2021-07-05 00:23:09 字數 1335 閱讀 4145

最近在做乙個小專案,期間需要用到c#去操作ie頁面中的元素,實現自動填寫表單並且提交的功能,想這網上關於這方面的東西肯定很多,於是開始在網上找資料。

1.首先新增必須的兩個控制項的引用

microsoft internet controls

microsoft html object library

2.遍歷所有的ie視窗

shdocvw.shellwindows shellwindows = new shdocvw.shellwindowsclass();

foreach (internetexplorer browser in shellwindows)

}

3.通過dom操作ie頁面

mshtml.ihtmlelementcollection inputs = (mshtml.ihtmlelementcollection)doc2.all.tags("input");

mshtml.htmlinputelement input1 = (mshtml.htmlinputelement)inputs.item("kw1", 0);

input1.value = "test";

mshtml.ihtmlelement element2 = (mshtml.ihtmlelement)inputs.item("su1", 0);

element2.click();

4.遍歷操作iframe中的元素

分析網頁結構,是多層iframe相互巢狀的複雜結構,並且上層是無法獲取子層的元素的,真是麻煩~

後來轉念一想,既然是多層巢狀,那不正好可以用遞迴來實現麼,遍歷所有的iframe應該可行,暴力美學~

//遍歷iframe

public static bool framesrecursion(ref ihtmlwindow2 frame)

//遍歷該iframe包含的所有子iframe

ihtmlframescollection2 frames = (ihtmlframescollection2)framedoc.frames;

int len = frames.length;

if (len <= 0) return false;

object i = 0;

object olen = len;

while ((int)i < (int)olen)

return false;

}

最後打包程式的時候需要這兩個庫對應的dll放在exe同乙個目錄下面,否則很可能因為dll版本的不同造成不報錯的失敗。

C 通過遍歷IFrame訪問頁面元素

最近在做乙個小專案,期間需要用到c 去操作ie頁面中的元素,實現自動填寫表單並且提交的功能,想這網上關於這方面的東西肯定很多,於是開始在網上找資料。1.首先新增必須的兩個控制項的引用 microsoft internet controls microsoft html object library ...

子頁面訪問父頁面 和 跨iframe訪問

1.a iframe的頁面訪問b iframe頁面的內容。parent.document.getelementbyid b iframe的id contentwindow.document.getelementbyid b iframe頁面要訪問的元素id 2.a iframe的3級頁面訪問b if...

iframe子頁面與父頁面的元素訪問

宣告既然是子頁面要訪問父頁面那麼下面的操作 就要寫在子頁面裡 js方法是parent.document.getelementbyid或者parent.document.getelementbyclassname jquery方法是var iwantobject window.parent.docum...