AutoIt Firefox _FFClick не работает на кнопке? (FF.au3)
Как использовать плагин firefox ("ff-au3") для AutoIt, как мне нажать кнопку?
Вот HTML-код элемента, на который я хочу нажать:
<input accesskey="s" class="aui-button" id="login-form-submit" name="login" title="Press Alt+s to submit this form" type="submit" value="Log In">
А вот фрагмент кода для нажатия на кнопку:
;Click the "Log In" button, id is "login-form-submit"
_FFClick("login-form-submit", "id")
На данный момент мой скрипт уже подключен к Firefox, уже на нужной мне странице, и все остальное работает (кроме этой части клика!)
Вот ошибка, которую я получаю обратно:
_FFClick ==> No match: $sElement: FFau3.WCD.getElementById('login-form-submit')
Кроме того, это работает, когда я вручную запускаю его на странице, используя консоль javascript:
document.getElementById("login-form-submit")
А вот API для плагина: http://english.documentation.ff-au3.thorsten-willert.de/ff_functions/_FFClick.php
Кто-нибудь видит что-то, что я делаю не так?
Версии:
- Firefox 44.0.1
- AutoIt v3.3.14.2
- FF V0.6.0.1b-15.au3 (плагин Firefox)
- MozRepl v.1.1.2
- SciTE-Lite v. 3.5.4
1 ответ
Ну, это не получило много трафика, но я нашел решение! Довольно просто... Я отключился от Firefox перед выполнением клика!
При использовании firefox сначала необходимо открыть исполняемый файл firefox с помощью команды "Выполнить", а затем подключиться к firefox с помощью команды "_FFConnect". Далее вы можете начать нажимать элементы. Когда вы закончите, отключитесь от Firefox, используя команду "ProcessClose". Проблема, с которой я столкнулся, заключалась в том, что я подключился к Firefox, затем немедленно отключился и попытался щелкнуть. Итак, я убедился, что я отключился после того, как сделал щелчок...
Рабочее решение: myScript.au3 (см. Функцию "Вход" внизу)
#include <Constants.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <EventLog.au3>
#include <FF V0.6.0.1b-15.au3> ;FireFox
OpenLog()
OpenFirefox()
ConnectToFirefox()
LogIn()
; ////////////////////////////////////////////////////
; Configure the Log
; ////////////////////////////////////////////////////
Func OpenLog()
Global $log = FileOpen("K:\Log.txt", 2)
; Check if file opened for reading OK
If $log == -1 Then
FileWrite($log,"[ERROR] Could not open log file." & @CRLF)
MsgBox(0, "Error", "Unable to open log file.", [ timeout = 0])
Exit
Else
FileWrite($log,"[INFO] Opened log file successfully." & @CRLF)
EndIf
EndFunc
; ////////////////////////////////////////////////////
; Open Firefox
; ////////////////////////////////////////////////////
Func OpenFirefox()
;Run Firefox in Maximized
Global $ffPid = Run("C:\Program Files (x86)\Mozilla Firefox\firefox.exe","",@SW_MAXIMIZE)
; Check if firefox was opened OK
If @error <> 0 Then
FileWrite($log,"[ERROR] Could not open firefox." & @CRLF)
MsgBox(0, "Error", "Could not open firefox.", [ timeout = 0])
Exit
Else
FileWrite($log,"[INFO] Firefox opened successfully." & @CRLF)
EndIf
;Wait 10 seconds for Firefox to open
$result = WinWait("[CLASS:MozillaWindowClass]","",10)
; Check if file opened for reading OK
If $result == 0 Then
FileWrite($log,"[ERROR] Unable to open firefox class." & @CRLF)
MsgBox(0, "Error", "Unable to open firefox class.", [ timeout = 0])
Exit
Else
FileWrite($log,"[INFO] Opened firefox class successfully." & @CRLF)
EndIf
;Wait for 2 seconds after opening
Sleep(2000)
EndFunc
; ////////////////////////////////////////////////////
; Connect To Firefox
; ////////////////////////////////////////////////////
Func ConnectToFirefox()
; trying to connect to a running FireFox with MozRepl on
If _FFConnect(Default, Default, 3000) Then
FileWrite($log,"[INFO] Connected to Firefox." & @CRLF)
Else
FileWrite($log,"[ERROR] Can't connect to FireFox!" & @CRLF)
MsgBox(64, "", "Can't connect to FireFox!")
EndIf
;Wait for 2 seconds after opening
Sleep(2000)
EndFunc
; ////////////////////////////////////////////////////
; Log into page
; ////////////////////////////////////////////////////
Func LogIn()
;Load Login Page
_FFOpenURL("http://localhost/login.jsp")
Sleep(2000)
If @error <> 0 Then
FileWrite($log,"[ERROR] Could not open URL." & @CRLF)
MsgBox(0, "Error", "Could not open URL.", [ timeout = 0])
Exit
Else
FileWrite($log,"[INFO] Opened URL successfully." & @CRLF)
EndIf
Sleep(2000)
;Click the "Log In" button, id is "login-form-submit"
;<input accesskey="s" class="aui-button" id="login-form-submit" name="login" title="Press Alt+s to submit this form" type="submit" value="Log In">
_FFClick("login-form-submit", "id")
If @error <> 0 Then
FileWrite($log,"[ERROR] Could not click login button." & @CRLF)
MsgBox(0, "Error", "Could not click login button:", [ timeout = 0])
Exit
Else
FileWrite($log,"[INFO] Found and clicked login button successfully." & @CRLF)
EndIf
EndFunc