Я пытаюсь выполнить некоторую веб-автоматизацию, чтобы войти в систему и проверить статус заказа с помощью WatiN на динамически загружаемой веб-странице. Я использую Visual Studio C# Express 2010 и браузер IE.
Несколько фрагментов кода для получения .Text из <TD>
, которые вчера отлично работали, больше не работают. Рассматриваемый <TD>
содержит <NOBR>
и <INPUT>
, в этом проблема?
Текст, который мне нужен, также находится в <INPUT>
, но тег не имеет определенного атрибута ID
или NAME
и содержит внутренний текст/значение, которое не совпадает от теста к тесту. Я не могу редактировать данный сайт, иначе это было бы исправлено давным-давно.
Виновник:
public TableCell Status {
get {
return Document.TableCell(Find.ById("elementID"));
}
}
Другие ячейки таблицы не работают, но текстовые поля и кнопки работают нормально. Я предполагаю, что веб-сайт большой, и WatiN, возможно, время от времени отключается, пытаясь найти элемент. Я был почти уверен, что WatiN выкинул ElementNotFoundException()
только после того, как дошел до конца документа. (???)
Элементы формы не загружались полностью для отладки до их достижения, поэтому я подумал, что это может быть проблемой, но все элементы for, которые НЕ были элементами, были загружены правильно, и их существование было верным для всех из них. Кроме того, это просто проблема отладки, и она отлично работала, когда я скопировал .exe на рабочий стол с моими файлами .dll.
Я уже настроил свой отладчик так, чтобы «Включить оценку свойств и другие неявные вызовы функций» был отключен, и это не помогло.
Метод работал, когда я запускал прямой .exe, но не через Visual Studio. Затем он перестал работать, когда я пересобрал тот же самый код и снова скопировал .exe на рабочий стол.
ОБНОВЛЕНИЕ: по-видимому, веб-администратор сайта, к которому нужно подключиться, внес некоторые изменения, которые сломали кучу вещей, так что, может быть, мой код в конце концов в порядке? Я обновлю снова, когда получу от него ответ.