2010-06-02 15 views
5

Tengo varias pestañas abiertas en Firefox. Quiero que AutoIt active una pestaña en particular en Firefox. ¿Cómo puede hacerse esto?AutoIt con Firefox

Respuesta

-4

No he tocado AutoIt en años, pero IIRC Será:

setMousePos(x, y) // tab position 
click("left") 
+2

quiero que una pestaña activa en función de su nombre, no en su posición. – neuromancer

+1

MouseClick ("Izquierda", x, y,) sería como harías clic izquierdo en algún lugar de AutoIt v3. – Copas

5

Dar todo el foco de la ventana del navegador, a continuación, utilizar el comando Enviar para enviar repetidamente cntl-pestaña hasta que el título de la ventana es el nombre de la pestaña que desea (con - Mozilla Firefox al final).

+1

Es Ctrl + Tab, ¿no es así? – grossvogel

+1

Vi a alguien hacerlo sin tener que alternar entre todos los títulos de la ventana utilizando autoit, pero no sé cómo lo hicieron porque no vi la fuente. – neuromancer

5

Hay un UDF (Funciones definidas por el usuario-archivo de inclusión) llamado FF.au3. Parece que la función que desea es _FFTabSetSelected(), ¡buena suerte!

A continuación se muestra un ejemplo del método de Jeanne Pindar. Esta es la forma en que lo haría.

#include <array.au3> 

Opt("WinTitleMatchMode", 2) 

activateTab("Gmail") 
Func activateTab($targetWindowKeyphrase) 
    WinActivate("- Mozilla Firefox") 
    For $i = 0 To 100 
     If StringInStr(WinGetTitle(WinActive("")),$targetWindowKeyphrase) Then 
      MsgBox(0,"Found It", "The tab with the key phrase " & $targetWindowKeyphrase & " is now active.") 
      Return 
     EndIf 
     Send("^{TAB}") 
     Sleep(200) 
    Next 
EndFunc 
+3

El FF.au3 incluye requiere que se instale MozRepl, puede obtenerlo aquí: https://github.com/bard/mozrepl/wiki. – MaQleod

3

Aquí tienes ...

AutoItSetOption("WinTitleMatchMode", 2) 

$searchString = "amazon" 

WinActivate("Mozilla Firefox") 
For $i = 0 To 100 
    Send("^" & $i) 
    Sleep(250) 
    If Not(StringInStr(WinGetTitle("[ACTIVE]"), $searchString) = 0) Then 
     MsgBox(0, "Done", "Found it!") 
     ExitLoop 
    EndIf 
Next 

Simplemente elimine el MsgBox y ya está todo listo!

2

Como dijo Copas, use FF.au3. La función _FFTabSetSelected($regex,"label") seleccionará la primera pestaña con el nombre coincidente dado $regex.

+0

+1 aproximadamente 1 código de línea y +1 sobre no enviar eventos. A MENUDO cualquier 'enviar' o' clic' a las ventanas activas cuando puede usar Objetos. Esta es la forma correcta de configurar la pestaña seleccionada. Al hacerlo, puede cerrar una pestaña sin interferir con otras ventanas, incluso si el Windows que contiene la pestaña está oculto. – erm3nda

0

Nop ... El guión está libre de errores ^^' ... no hay necesidad de contar hasta 100, y hay un problema con el 'enviar' después de que:

Si envía Ctrl + número = > el número no puede ser mayor que 9 ... Dado que diez es un número con 2 caracteres, Firefox no puede activar la pestaña 10 con acceso directo.

Y, por cierto, cuando la secuencia de comandos funciona, hay un momento en que suelta la tecla Ctrl .. No envía diez, pero ctrl y 1 final cero ... y salpican !!! Simplemente envía el número en la ventana. Así que tenemos que aprender la secuencia de comandos que la segunda vez que regresó a $ i = 0 o uno, se vieron todas las pestañas, no es necesario continuar, incluso si el texto que está buscando no se encontró. Así que hizo que mi propio guión basado en el anterior:

## 
AutoItSetOption("WinTitleMatchMode", 2) 

$searchString = "The string you're looking for" 
Local $o = 0 
WinActivate("The Name of the process where you're searching") 
For $i = 0 To 9 
    Send("^" & $i) 
    Sleep(250) 
     if ($i = 9) Then 
     $o += 1 
     EndIf 
     If not (StringInStr(WinGetTitle("[ACTIVE]"), $searchString) = 0) Then 
      MsgBox("","","Found it !") ;your action, the text was found. 
      ExitLoop 
     ElseIf ($o = 1) Then 
      MsgBox("","","All tab seen, not found...") ;your action, the text was not found, even after looking all title. 
      ExitLoop 
     EndIf 
    Next 
## 
Cuestiones relacionadas