Próbuję zautomatyzować niektóre z naszych procesów, jeden obejmuje logowanie się do zewnętrznej strony internetowej, kliknięcie łącza w celu rozwinięcia szczegółów, a następnie pobranie wszystkich wyświetlanych szczegółów.Strona WWW skrobania ekranu zawierająca przycisk z AJAX
Mam proces logowania i mogę pobrać wszystkie szczegóły po ich rozszerzeniu.
Problem polega na kliknięciu łącza. Łącze jest zdefiniowana jak poniżej (usunąłem co metoda Submit
faktycznie robi jak kod jest długa i prawdopodobnie nieistotne Oczywiście img
jest zastępczy tylko jako przykład.):
<a id="form:SummarySubView:closedToggleControl" onclick="A4J.AJAX.Submit(...); return false;" href="#">
<img ... />
</a>
używam te dane jak poniżej:
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser browser = (WebBrowser)sender;
HtmlElement expandDetails = browser.Document.GetElementById("form:SummarySubView:closedToggleControl");
//When open ID for element is "form:SummarySubView:openToggleControl"
if(expandDetails == null) //If already expanded
{
//Stuff
}
else
{
expandDetails.InvokeMember("click"); //Click on element to run AJAX
}
}
Po uruchomieniu expandDetails.InvokeMember("click");
browser_DocumentCompleted
jest wywoływana ponownie zgodnie z oczekiwaniami, ale dokument jest taka sama jak poprzednio i expandDetails
ponownie znaleźć z „zamknięty” id. Oznacza to, że szczegóły, których szukam, nigdy nie są pokazywane.
Jak uzyskać dostęp do dokumentu PO uruchomieniu skryptu AJAX?
Dodawanie pliku Timer
do opóźnienia sprawdzania dokumentu nie działa.
Awesome! Cieszę się, że udało ci się. –