Przygotuję aplikację do automatyzacji zewnętrznej strony internetowej / aplikacji. W niektórych przypadkach będę musiał nawigować w witrynie tak, jak zrobiłby to użytkownik (niektóre linki, których muszę użyć, nie mogą być przewidziane i muszą zostać przeanalizowane na podstawie odpowiedzi)
Korzystam już z pakietu zwinności HTML i jestem świadom Tidy, jeśli jest to potrzebne.
Czy są jeszcze jakieś technologie, o których powinienem wiedzieć?
Czy są jakieś zalecane wzorce szybkiego dostosowania się w przypadku zmiany zewnętrznej aplikacji internetowej? Przewiduję podsumowanie sprawdzania poprawności odpowiedzi jako pewnego rodzaju strategii lub podobnego wzorca, który można łatwo oddzielić / podłączyć w razie potrzeby, ale wszelkie konkretne sugestie byłyby świetne.
źródło
Odpowiedzi:
Jeśli chcesz zautomatyzować nawigację na zewnętrznej stronie internetowej tak, jak zrobiłby to użytkownik, Watin jest do tego idealny. Będzie prowadzić przeglądarkę internetową przez model obiektowy i ma szeroki zakres możliwości analizowania wbudowanych w DOM (a także funkcje inne niż DOM, które można znaleźć w przeglądarce, w tym skrypty).
Oto link:
Watin.org
źródło
Jeśli szukasz możliwości szybkiego wprowadzania zmian w celu śledzenia tych zmian w zewnętrznej aplikacji internetowej, spojrzałbym na skrypt. Jeśli C # jest Twoim wybranym językiem, spójrz na kompilowanie kodu w locie. Jeśli korzystasz z bazy danych, kod skryptu może być tam zapisany, w przeciwnym razie działałyby również zwykłe pliki tekstowe.
Jeśli chodzi o wzorce GoF, strategia jest wyborem podręcznika.
Drugi „wzorzec”, który należy wziąć pod uwagę, zwłaszcza że wspomniano o sprawdzaniu poprawności odpowiedzi przy użyciu ich do wyboru następnej akcji, to maszyna o stanie skończonym . Na przykład, stany dla klienta poczty internetowej mogą być „niezalogowane”, „w skrzynce odbiorczej”, „czytaniu wiadomości”, „edytowaniu odpowiedzi” itp. Wykonałbyś jakąś akcję w zależności od stanu, a następnie na podstawie odpowiedź, wybierz następny stan.
źródło
Wzór naprawdę powinien wynikać z problemu, ale oto kilka opcji:
Jeśli chodzi głównie o ciągły koszt / irytację programistyczną: wzorzec strategii (już wspomniany) - użyj go, aby zaimplementować interfejsy na poziomie komponentu, i zastosuj metodologię dynamicznego wiązania, aby rozwiązać określone strategie (wdrożenia). Kontener IOC (obecnie lubię Autofac) działałby dobrze.
Jeśli potrzebujesz wesprzeć powyższe plus, musisz skalować: Zmniejsz mapę (ktoś wie o dobrym m + r fx dla .net?).
źródło
W zależności od tego, jak bardzo zmienia się strona internetowa, może to być trudne. Możesz przechowywać listę standardowych wyrażeń regularnych w bazie danych, a gdy jedno z nich przestanie działać, możesz zapętlać zestaw podstawowy z innymi, aż trafisz jedno. Następnie chcesz zaznaczyć to do wykorzystania w przyszłości.
źródło