Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Chopin13

AutoIt - klikanie przycisku na stronie WWW

Rekomendowane odpowiedzi

Dzień dobry Forumowicze,

 

w AutoIt piszę niedługo więc pewnie pytania mogą się wydać laickie. Bardzo zależy mi, aby to wszystko udało się zrobić bez funkcji z UDFa <IE.au3>.

 

Po sprawdzeniu przycisku w przeglądarce:

 

<INPUT onclick='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ContentPlaceHolder1$ExcelExportCtl1$btnExcelExport", "", true, "", "", false, false))' 
id=ContentPlaceHolder1_ExcelExportCtl1_btnExcelExport title="Click here to export to Excel." 
class=Medium type=submit value="Excel Export" name=ctl00$ContentPlaceHolder1$ExcelExportCtl1$btnExcelExport>

 

Moje nieudolne wypociny z komentarzami:

 

Func Przygotuj_Raport_DPM()
$oIE = ObjCreate("InternetExplorer.Application")
$oIE.Visible = True 
$HWND = _IEPropertyGet($oIE, "hwnd");Nie wiem jak to obejsc bez <ie.au3>
WinSetState($HWND, "", @SW_MAXIMIZE);Nie wiem jak to obejsc bez <ie.au3>
$oIE.Navigate("http://mintel.us.dell.com/EMEA/OrderDashboard.aspx?RoleId=56729&ViewID=100075475&AreaId=1025304")

Sleep(9000) ;Na $oIE.ReadyState <> 4 w petli while i sleep w zawartosci, wywala blad dlatego samo sleep

$Przyciski = $oIE.document.getElementsByTagName("INPUT") ;tu nawet nie ma co pisać, totalny chaos i desperackie klepanie róznych kombinacji
$Przycisk = $przyciski.document.getElementById("ContentPlaceHolder1_ExcelExportCtl1_btnExcelExport")
;$oIE.document.forms.item("input").elements.item("ctl00$ContentPlaceHolder1$ExcelExportCtl1$btnExcelExport").click

$Przycisk.click
EndFunc

 

Jakby tego było mało, trzeba jeszcze plik zapisać w podanej przeze mnie lokalizacji:

 

post-589337-15143590110387_thumb.jpg

 

Proszę o pomoc w formie kodu/jego fragmentów/wskazania czegoś co mnie naprowadzi.

 

1. Jak użyć ReadyState przy otwieraniu strony?

 

2. Jak kliknąć ten przycisk?

 

3. Jak zapisać ten plik korzystając z tego komunikatu w IE?

 

Z góry dziękuję.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W jaki sposób wyciągnąć bezpośredni link do pliku?

Próbowałem przy pomocy menadżera pobierania z FireFox i Chrome. W kodzie strony też nic takiego nie widzę.

Plik zmienia się 4-5 razy na dobę, czy link bezpośredni też nie będzie się wtedy zmieniał?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W jaki sposób wyciągnąć bezpośredni link do pliku?

Próbowałem przy pomocy menadżera pobierania z FireFox i Chrome. W kodzie strony też nic takiego nie widzę.

Plik zmienia się 4-5 razy na dobę, czy link bezpośredni też nie będzie się wtedy zmieniał?

Ciężko stwierdzić czy link się zmienia, strona mi się nie otwiera, nie wystarczy kliknąć na przycisk i wcisnąć "kopiuj adres odnośnika" :D?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A czemu zdecydowałeś się na AutoIT? Może spróbuj z WebDriverem. Możesz łatwo ustawić odpowiednie flagi na uruchamianiu przeglądarki tak, żeby nie wyświetlało pytania o pobranie, tylko zawsze pobierało bezpośrednio do docelowego folderu. Pewnie te same ustawienia możesz wyklikać. Przynajmniej w przypadku Chrome i FF, z IE nigdy się nie bawiłem.

 

Nie wiem w czym tam piszesz, ale może wystarczyłoby pierdzielnąć w klawisz Enter, ewentuanie Tab i Enter? W javie na pewno jest klasa Robot, która mogłaby to załatwić na szybko :)

Jeśli jesteś członkiem zespołu developerskiego, może poproś o wygenerowanie takiego linku, i wrzucenie go jako atrybut do jakiegoś elementu?

 

I zawsze możesz poszukać na StackOverflow :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Ciężko stwierdzić czy link się zmienia, strona mi się nie otwiera, nie wystarczy kliknąć na przycisk i wcisnąć "kopiuj adres odnośnika" :D?

Fakt, link u Was się nie otworzy, to wewnętrzna apka do której trzeba wystąpić o dostęp. Nie ma możliwości skopiowania adresu odnośnika.

 

A czemu zdecydowałeś się na AutoIT? Może spróbuj z WebDriverem.

Jestem pewien, że jest wiele innych języków i narzędzi do rozwiązywania tego typu problemów. Sprawa wygląda tak, że w zespole w którym obecnie się znajduję jest napisany bot odpowiedzialny za generowanie raportów, co określony czas lub na odpowiednie komendy. To jest połączone z Outlookiem i tak wszystko dzieje się samo. Osoba odpowiedzialna za niego niedługo zmienia pracodawcę, poza tym uważam, że można to napisać lepiej, stabilniej i z większą kontrolą (O Panieee kto to Panu tak spier*****? - lecz z zachowaniem pokory i szacunku dla pierwotnego twórcy). Połączenie z Outlookiem i Accessem to była igraszka, ale jeśli chodzi o DOM to leżę jak długi z tępym wyrazem twarzy. AutoIt wybrałem dlatego, że istniejący bot jest w nim właśnie napisany, jest przyjazny (AutoIt), a ten raport to tylko kropla w morzu tego czym będzie się zajmował, a większość z tego najłatwiej rozwiązać właśnie przy pomocy AutoIt.

 

Nie wiem w czym tam piszesz, ale może wystarczyłoby pierdzielnąć w klawisz Enter, ewentuanie Tab i Enter?

 

To była 10 czy 15 z kolei myśl jaką wcieliłem w życie zanim zacząłem Wam truć. Fakt, działa. Pod warunkiem, że strona się otworzy, a ta nie zawsze ma ochotę zrobić to w oczekiwanym czasie, dlatego tak ważne jest dla mnie użycie ReadyState. Poza tym opcja duszenia {Tab} sprawdza się tylko do momentu kliknięcia w "Excel Export". Zapisanie odpada bo {Tab} musi przelecieć przez wszystkie rekordy, a ich ilość się zmienia. Co do ReadyState, na innej stronie użyłem:

$LoopStop = TimerInit()
While $oIE.Busy
Sleep(200)
if TimerDiff($LoopStop) > 600000 then ;10 min oczekiwania na strone
	Mail("Wygenerowanie raportu DISCP jest niemozliwe - strona nie odpowiada", "Błąd DISCP", "Potwierdzenia", 1, $adoCon) ; funkcja wysyłajaca mail
	$DISCP = False
	ExitLoop
EndIf
WEnd

Działa jak marzenie, ta o której do Was piszę jest wyjątkowo oporna na wszelkie próby okiełznania. Zaczyna mi mocno działać na nerwy...

 

Co myślicie o wykorzystaniu ImageSearch i oczekiwania na pojawienie się obrazka?

 

Taka dygresja od tematu: jak robicie takie fajne cytaty z "Chopin13, o 28 Grudzień 2017 - 08:22, napisał(a):" prawie nigdy nie korzystałem z for internetowych jeśli chodzi o pytania, zawsze znajdowałem rozwiązania bez pisania postów. :(

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na jedno pytanie jeszcze nie odpowiedziałeś :) Czy to Wasz wasny soft? Jeśli tak - uderz to devów, i znajdźcie rozwiązanie zwiększające "testability".

Jeśli nie - uderz do właściciela softu :) Może jest jakaś końcówka API która Ci wygeneruje taki raport po wysłaniu odpowiedniego requesta?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...