У меня возникла проблема с очисткой некоторых данных с этого веб-сайта с помощью компонента MSHTML COM. У меня есть WebBrowser
элемент управления в моей форме WPF.
Код, в котором я получаю элементы HMTL, находится в событиях WebBrowser LoadCompleted
. После того, как я установил значения данных на HTMLInputElement
и вызвал метод щелчка на HTMLInputButtonElement
, он отказывается отправить запрос и отобразить следующую страницу.
Я анализирую HTML-код для атрибута onclick на кнопке, он фактически вызывает функцию JavaScript и обрабатывает мой запрос. Что заставляет меня не быть уверенным, что вызов функции JavaScript вызывает проблему? Но как ни странно, когда я извлекаю свой код из метода LoadCompleted
и помещаю его в событие нажатия кнопки, он фактически выводит меня на следующую страницу, где метод LoadCompleted
не сработал. Подобные действия лишают смысла попытки автоматически скрашивать страницу.
Еще одна мысль: когда у меня был код внутри метода LoadCompleted
, я думаю, что HTMLInputButtonElement
не полностью отображается на странице, что приводит к тому, что событие click не срабатывает, несмотря на тот факт, что при просмотре объект во время выполнения фактически удерживает там элемент кнопки отправки, и состояние говорит, что я завершил, что еще больше сбивает меня с толку.
Вот код, который я использовал внутри метода LoadCompleted
и метод click на кнопке:
private void browser_LoadCompleted(object sender, NavigationEventArgs e)
{
HTMLDocument dom = (HTMLDocument)browser.Document;
IHTMLElementCollection elementCollection = dom.getElementsByName("PCL_NO_FROM.PARCEL_RANGE.XTRACKING.1-1-1.");
HTMLInputElement inputBox = null;
if (elementCollection.length > 0)
{
foreach (HTMLInputElement element in elementCollection)
{
if (element.name.Equals("PCL_NO_FROM.PARCEL_RANGE.XTRACKING.1-1-1."))
{
inputBox = element;
}
}
}
inputBox.value = "Test";
elementCollection = dom.getElementsByName("SUBMIT.DUM_CONTROLS.XTRACKING.1-1.");
HTMLInputButtonElement submitButton = null;
if (elementCollection.length > 0)
{
foreach (HTMLInputButtonElement element in elementCollection)
{
if (element.name.Equals("SUBMIT.DUM_CONTROLS.XTRACKING.1-1."))
{
submitButton = element;
}
}
}
submitButton.click();
}
К вашему сведению: это URL-адрес веб-страницы, к которой я пытаюсь получить доступ, используя MSHTML,
http://track.dhl.co.uk/tracking/wrd/run/wt_xtrack_pw.entrypoint.