Автоматизация WhatsApp с помощью Selenium - PullRequest
0 голосов
/ 25 июня 2018

Я автоматизирую WhatsApp Web с помощью selenium автоматизации браузера, используя java и Chrome Ниже работает код:

    // Update a cell value

    DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();

    try
    {
        WebDriverWait wait = new WebDriverWait(driver, 60);
        wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("side")));

        System.out.println("Logged In....");

        for (int i = 0; i < SendToList.size(); i++)
        {
            String Number = SendToList.get(i);
            System.out.println("Opening link....");
            driver.get("https://web.whatsapp.com/send?phone="+Number);

            try
            {
                   Alert alert = driver.switchTo().alert();
                   alert.accept();
                   System.out.println("Alert accepted....");
            }
            catch(NoAlertPresentException e)
            {
                System.out.println("Alert not detected....");
            }

            System.out.println("Proceeding ahead....");

            try
            {
                WebDriverWait await = new WebDriverWait(driver, 12);
                await.until(ExpectedConditions.visibilityOfElementLocated(By.id("main")));
                System.out.println("In Message to...."+Number);

                driver.findElement(By.className("_2S1VP")).sendKeys(TextMessage);
                System.out.println("Message written....");

                driver.findElement(By.className("_2lkdt")).click();
                System.out.println("Message sent....");

                dtm.setValueAt("SENT", i, 3);

                Thread.sleep(4000);


            }
            catch (TimeoutException e)
            {
                driver.findElement(By.xpath("//div[@class='_1WZqU PNlAR']")).click();
                dtm.setValueAt("N/A", i, 3);
                System.out.println("Element not found...");
            }
            catch (InterruptedException e) 
            {
                System.out.println("Could not sleep for 1 seconds or failed to send sms...");
            }
        }



    }
    catch(Exception e)
    {
        for (int i = 0; i < SendToList.size(); i++)
        {
            dtm.setValueAt("FAILED", i, 3);
        }

        JOptionPane.showMessageDialog(this, "You must login within 60 seconds to WhatsApp...!!", "Alert", JOptionPane.ERROR_MESSAGE);
    }

Есть несколько вещей, которые я хочу сделатьРазрешить это можно следующим образом:

  1. В большинстве случаев, даже если вы вошли в систему до 60 секунд, а после отправки 2 или 3 сообщений вы должны войти в систему в течение 60 секунд;что невозможно ... но все же происходит ..
  2. Я хочу выполнить цикл только при успешном входе в систему ... и также хочу обрабатывать все исключения в каждом цикле ... и даже если возникает исключение, он должен продолжить следующий цикл.Как именно попытаться перехватить исключение должно быть помещено ... !!
  3. Перезагрузка всего URL снова и снова для отправки каждого сообщения занимает много времени и пропускной способности тоже. Как я могу управлять этим с помощью JavaScript без необходимостиперезагрузите его снова и снова.

Благодарю вас всех

...