Próbuję utworzyć oprogramowanie, które w mniejszym lub większym stopniu automatyzuje wypełnianie formularzy na stronie internetowej - i zdecydowałem się użyć formantu WebBrowser w wersji System.Windows.Forms
. Działa to świetnie i mogę łatwo manipulować DOM doi tak dalej. Niestety strona, na której robię automatyzację, ma ładowanie plików, które jest uruchamiane wewnątrz elementu iframe - i tutaj utknąłem, po prostu nie potrafię sobie wyobrazić, jak można manipulować elementami wewnątrz DOM elementu iframe.Formant systemu Windows Forms WebBrowser i iframes
Idealnie co chciałbym zrobić coś takiego jak:
HtmlElement iframe = browser.Document.GetElementById("iframe_id");
iframe.InnerDocument.GetElementById("file_upload_input").SetAttribute("value", "myfile.txt");
a następnie przesłać formularz wewnątrz iframe oczywiście - jednak nie ma InnerDocument
atrybut HtmlElement
miarę widzę, ani nie ma typu, który znalazłem, że mogę rzucić HtmlElement
, aby uzyskać dostęp do wewnętrznego DOM.
Jak to się robi?
Aha - to było coś, o czym zapomniałem. Należy jednak zauważyć, że kod, który tutaj zamieściłeś, to javascript - odpowiedni kod potrzebny do kontroli WebBrowser to browser.Document.Window.Frames ["frame"], aby uzyskać element iframe. – kastermester
@ststermester nie ma. Windows pod browser.document (po prostu zaznaczone pod żywym obiektem) i powyższy kod nie działa (w VB6 tak). czy istnieje różnica między .frames [...] a .frames (...)? tak (lub [robię różnicę? Próbowałem obu bez skutku. –