Clicky

Браузерна автоматизація з Selenium

Оновлено 3 weeks ago від Yelena

Статті за темою

Браузерна автоматизація з Selenium дає змогу автоматизувати різні завдання в профілях Multilogin: від створення простих скриптів автоматизації до веб-краулерів, що займаються пошуком, збором і взаємодією з даними різних онлайн-ресурсів.

Браузерна автоматизація Multilogin заснована на Selenium WebDriver.

Під час звичайної автоматизації з Selenium, ви, як правило, насамперед підключаєтеся до Firefox (Gecko) або Chrome драйвера безпосередньо і встановлюєте потрібні параметри. У випадку з Multilogin, ви використовуєте Remote Web Driver для підключення до браузерного профілю через локальний порт і встановлюєте потрібні параметри для запуску команд у певному профілі.

Підтримувані мови

Selenium підтримує безліч мов програмування, тому й автоматизація з Multilogin може бути написана різними мовами. Проте наразі ми надаємо технічну підтримку лише для скриптів, написаних на Python.

Selenium в Multilogin

Визначення порту Multilogin

Щоб використовувати автоматизацію Selenium у Multilogin, заздалегідь необхідно визначити порт програми.

  1. Перейдіть у папку C:\Users\%username%\.multiloginapp.com і відкрийте файл app.properties у будь-якому текстовому редакторі.
  2. Додайте в файл наступний рядок: multiloginapp.port=[PORT_NUMBER].
Номер порту повинен знаходитися в діапазоні від 10000 до 49151.
  1. Збережіть файл app.properties.

Надалі ви зможете звертатися до Multilogin, використовуючи заданий порт.

Інструкції для початку роботи на різних ОС ви можете знайти в нашому посібнику.

Приклад на Java

import org.junit.Assert;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.RemoteWebDriver;

import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class BrowserProfile {
public static void main(String[] args) throws Exception {
BrowserProfile bp = new BrowserProfile();
//TODO replace with existing profile ID. Define the ID of the browser profile, where the code will be executed.
String profileId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";

//Define DesiredCapabilities
DesiredCapabilities dc = new DesiredCapabilities();

//Instantiate the Remote Web Driver to connect to the browser profile launched by startProfile method
RemoteWebDriver driver = new RemoteWebDriver(new URL(bp.startProfile(profileId)), dc);

//Perform automation
driver.get("https://multilogin.com/");
Assert.assertEquals("Multilogin | Scale Fast With 1000s Of Profiles",driver.getTitle());
driver.quit();
}

private String startProfile(String profileId) throws Exception {
/*Send GET request to start the browser profile by profileId. Returns response in the following format:
'{"status":"OK","value":"http://127.0.0.1:XXXXX"}', where XXXXX is the localhost port on which browser profile is
launched. Please make sure that you have Multilogin listening port set to 35000. Otherwise please change the port
value in the url string*/
String url = "http://127.0.0.1:35000/api/v1/profile/start?automation=true&profileId=" + profileId;

URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("GET");

BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();

//Get JSON text from the response and return the value by key "value"
JSONObject jsonResponse = new JSONObject(response.toString());
return jsonResponse.getString("value");
}
}

Приклад на Python

from selenium import webdriver 
from selenium.webdriver.chromium.options import ChromiumOptions
from selenium.webdriver.firefox.options import Options
import requests

#TODO replace with existing profile ID. Define the ID of the browser profile, where the code will be executed.
mla_profile_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'

mla_url = 'http://127.0.0.1:35000/api/v1/profile/start?automation=true&profileId='+mla_profile_id

""" Send GET request to start the browser profile by profileId.
Returns response in the following format:'{"status":"OK","value":"http://127.0.0.1:XXXXX"}',
where XXXXX is the localhost port on which browser profile is launched.
Please make sure that you have Multilogin listening port set to 35000.
Otherwise please change the port value in the url string
"""
resp = requests.get(mla_url)

json = resp.json()
print(json)

#Instantiate the Remote Web Driver to connect to the browser profile launched by previous GET request
# In case of using Mimic browser
driver = webdriver.Remote(command_executor=json['value'], options=ChromiumOptions())

# In case of using Stealthfox browser
#driver = webdriver.Remote(command_executor=json['value'], options=Options())

#Perform automation
driver.get('https://multilogin.com/')
print(driver.title)
driver.quit()
Відео за темою


Наші новини, корисні статті та поради ви неодмінно знайдете тут


Вам вдалося вирішити проблему?