WhatsApp
một cách nhanh nhất sữ dụng Selemium Winform
.[VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
Ứng dụng di động WhatApp đã trở thành một trong những ứng dụng truyền thông hàng đầu trên thế giới, mang lại trải nghiệm kết nối linh hoạt và thuận lợi cho người dùng toàn cầu.WhatApp không chỉ là một ứng dụng nhắn tin thông thường, mà còn cung cấp nhiều tính năng đa dạng, từ gọi điện thoại, video call, đến chia sẻ hình ảnh và video.
Các bạn, có thể dùng source code này để gởi marketing đến khách hàng, nhớ set delay nhé bạn.
Dưới đây, là giao diện demo ứng dụng:
Ứng dụng gởi tin nhắn bằng chạy sử dụng
Selemium
và dùng Javascript
để thực thi những đoạn lệnh gởi tin nhắn.Imports System.IO Imports System.Net.Mime Imports System.Threading Imports OpenQA.Selenium Imports OpenQA.Selenium.Chrome Imports OpenQA.Selenium.Interactions Imports OpenQA.Selenium.Chromium Public Class FrmMain Dim driver As IWebDriver Dim driverPath As String = "chromedriver.exe" Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Timer1.Start() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim chromeDriverService As ChromeDriverService = ChromeDriverService.CreateDefaultService() chromeDriverService.HideCommandPromptWindow = True Dim chromeOptions As New ChromeOptions() chromeOptions.AddArgument("--disable-features=PermissionsPolicy") chromeOptions.AddArgument("--start-maximized") chromeOptions.AddArgument("--disable-notifications") chromeOptions.AddArgument("--disable-infobars") chromeOptions.AddArgument("--disable-extensions") 'chromeOptions.AddArgument("--headless") Dim userProfilePath As String = "profile" 'chromeOptions.AddExcludedArgument("enable-automation") 'chromeOptions.AddAdditionalCapability("useAutomationExtension", False) 'chromeOptions.AddArgument("user-data-dir=" & userProfilePath) driver = New ChromeDriver(chromeDriverService, chromeOptions) driver.Navigate().GoToUrl("https://web.whatsapp.com/") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click InjectWapi(driver) Dim phoneNumber = TextBox1.Text.Trim().Replace("+", "").Replace(" ", "") SendMessage(driver, phoneNumber, TextBox2.Text) If TextBox3.Text <> "" Then Dim pathFile = TextBox3.Text Dim bytes As Byte() = File.ReadAllBytes(pathFile) Dim filebase64 As String = Convert.ToBase64String(bytes) Dim fullBase64 As String = "data:application/pdf;base64," & filebase64 SendAttachment(driver, phoneNumber, fullBase64, Path.GetFileName(pathFile), TextBox2.Text) End If End Sub Public Shared Sub SendAttachment(driver As IWebDriver, number As String, ImageBase64 As String, FileName As String, caption As String) Dim text As String = "" Dim text2 As String = "" If text <> "" Then text2 = $",useTemplateButtons: false,buttons:[{text}]" End If Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor) Dim script As String = $"await WAPI.sendImage('{ImageBase64}','{number}@c.us','{FileName}',`{caption}`,'{text2}')" Try javaScriptExecutor.ExecuteScript(script, New Object() {}) Catch generatedExceptionName As Exception End Try End Sub Public Shared Sub InjectWapi(driver As IWebDriver) Try Dim wapi = File.ReadAllText("chatTemplate.csv") Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor) javaScriptExecutor.ExecuteScript(wapi, New Object() {}) Thread.Sleep(500) Catch generatedExceptionName As Exception Dim err = generatedExceptionName.Message End Try End Sub Public Shared Sub SendMessage(driver As IWebDriver, number As String, message As String, Optional isGroup As Boolean = False) Dim text As String If isGroup Then text = number Else text = number & "@c.us" End If Dim javaScriptExecutor As IJavaScriptExecutor = DirectCast(driver, IJavaScriptExecutor) Dim script As String = $"await WAPI.sendMessageToID('{text}',`{message}`,true)" javaScriptExecutor.ExecuteScript(script, New Object() {}) End Sub Private Sub FrmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing KillAllChromeDrivers() driver.Quit() driver.Dispose() End Sub Private Sub KillAllChromeDrivers() Try Dim chromeDriverProcesses() As Process = Process.GetProcessesByName("chromedriver") For Each chromeDriverProcess As Process In chromeDriverProcesses chromeDriverProcess.Kill() Next Catch ex As Exception End Try End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Title = "Select a File" openFileDialog.Filter = "All Files|*.*|Text Files|*.txt|Image Files|*.png;*.jpg|Excel Files|*.xls;*.xlsx" openFileDialog.Multiselect = False If openFileDialog.ShowDialog() = DialogResult.OK Then Dim selectedFilePath As String = openFileDialog.FileName TextBox3.Text = selectedFilePath End If End Sub Public Shared Function IsElementPresent(by As By, driver As IWebDriver) As Boolean If driver Is Nothing Then Return False End If Try driver.FindElement(by) Return True Catch ex As NoSuchElementException Return False End Try End Function Public PageLoadOK As Boolean = False Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim isElementDisplayed As Boolean = IsElementPresent(By.ClassName("_1XkO3"), driver) If isElementDisplayed Then PageLoadOK = True Button2.Enabled = True Activate() End If End Sub End Class
Với đoạn code trên mọi người có thể tùy biến và chỉnh sữa theo khả năng của bản thân.
Chúc mọi người thành công.