4 votos

Bash script para pulsar el botón en una página HTML

Estoy tratando de escribir un Bash script que abre un navegador, hace clic en un botón HTML en una página web, y cierra el navegador después de obtener respuesta. Necesito que este script sea ejecutable desde la Terminal. Si no es un script de Bash, entonces tal vez un script de Python.

La forma es:

<form method="post" action="duophones?yc=sasv1S2f8mXKITRJS1XrenZ30SA-" enctype="application/x-www-form-urlencoded"> 
<input name="phone" value="+15551231235" type="hidden">
<input name="action" value="dapact" type="hidden">
<input name="session" value="0" type="hidden">
<button class="c01 c01v0" name="action" type="submit" value="Activate +15551231234 over SMS (recommended)" override="true">Activate +15551231234 over SMS (recommended)</button> 
</form>

guión que tengo es:

curl -d value="Activate +15551231234 over SMS (recommended)" www.testpage.com

Se agradece cualquier ayuda o indicación.

1 votos

¿En qué URL y botón de la página quiere hacer clic?

0 votos

Scriptsigue sin ser correcto. ¿Alguna idea? @allan

0 votos

Ese script no es correcto. No hay variable llamado "valor".

6voto

haiggoh Puntos 73

Debería considerar el uso de código abierto Selenium .

Con un Selenium IDE plugin para Firefox puede grabar sus acciones (abrir una página, hacer clic en un botón), reproducir estos temas, y generar Python o Ruby scripts ricos que puede personalizar y llamar desde CLI.

Un ejemplo de script para probar la disponibilidad de Apache por defecto podría ser así:

#!/usr/local/bin/python

DEST_URL='http://webserver.dev/'

import unittest
from selenium import webdriver
from selenium.webdriver.common.proxy import *

class WebInterfaceTest(unittest.TestCase):

  def setUp(self):
     self.driver = webdriver.Firefox()

  def tearDown(self):
     self.driver.quit()

  def test_web_interface(self):
    self.driver.get(DEST_URL)
    self.assertIn('Apache2 Debian Default Page: It works', self.driver.title)

if __name__ == "__main__":
  unittest.main()

0 votos

Pensaré en un mejor script para ilustrar tu ejemplo.

2voto

Douglas Puntos 10417

Utilice cURL ( curl ). Es una herramienta de línea de comandos que transfiere datos utilizando varios protocolos, incluyendo HTTP. La belleza aquí es que no necesitas un navegador GUI; todo será manejado a nivel de línea de comandos.

El "botón" que quiere pulsar estará situado en algún tipo de formulario. Puede utilizar las herramientas de desarrollo en Chrome o Firebug en Firefox para ver el código del formulario. A continuación se muestra un ejemplo de formulario con un solo cuadro de texto y un botón de envío:

<form action="http://foo.bar/helloworld.html" method="POST">
<input type="text" name="phone"> <br/>
<input type="submit">
</form>

Si usted rellenara este formulario en su navegador web y pulsara "submit", básicamente enviaría lo que escribiera en la caja de texto y enviaría la petición al servidor.

Lo importante es que el formulario crea un "campo" de texto llamado teléfono que es donde se almacenarán los datos que se introduzcan para ser contabilizados. En este caso, cuando escribes tu número de teléfono (+12125551212) asigna ese valor a teléfono . Cuando se golpea el Enviar envía phone="+12125551212 como parte del POST.

Por lo tanto, utilizando lo que estoy asumiendo es el número de teléfono que desea enviar como el valor de la variable, en curl, el código se vería así:

curl -d "phone=+12125551212" http://foo.bar/helloworld.html

Desde curl es una utilidad de línea de comandos, se puede poner de forma nativa en un bash script:

#/usr/bin/bash

curl -d "phone=+12125551212" http://foo.bar/helloworld.html

exit

1 votos

Consejo: 1) Al añadir información adicional editar la pregunta original y añadirla allí. 2) No utilices información personal, como números de teléfono, ofuscándolos (por ejemplo, 212-555-1234). 3) Tu script no se parece en nada a mi ejemplo - ¿dónde está la dirección del sitio web donde se encuentra el formulario, y dónde está la asignación de variables?

0voto

Steve Evans Puntos 155

Otra opción para una navegación web robusta y automatizada es el programa de perl WWW::Mecanizar módulo.

A informar sobre el spam al servicio spamcop Utilizo una combinación de AppleScript y perl. AppleScript interactúa con Mail y obtiene el contenido del spam y la parte de perl se encarga de la navegación web.

A continuación se muestra un ejemplo de WWW::Mechanize para enviar un formulario a un servidor web, encontrar un botón específico en la respuesta y hacer clic en el botón:

#!/usr/bin/perl

use WWW::Mechanize;

my $spamcop_url = 'http://www.spamcop.net';

my $mech = WWW::Mechanize->new();
$mech->get( $spamcop_url );

$mech->submit_form(
        form_number => 1,
        fields      => {
            username    => 'ENTER YOUR SPAMCOP USER NAME HERE',
            password    => 'ENTER YOUR SPAMCOP PASSWORD HERE',
        }
    ) ."\n";

my $stop = 0;
while(not $stop) {

    $mech->follow_link( text => 'Report Now' ) ."\n";

    my $form = $mech->form_name( 'sendreport' );
    if ($form) {
        print "Send Report form found: ".$mech->value('reports')."\n";
        $mech->click_button( 'value' => 'Send Spam Report(s) Now' ) ."\n";
    } else {
        print "No report form button found.\n";
        $stop = 1;
    }
}

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X