Clicky

Selenium浏览器自动化

更新 1 month ago 由 Annes Silde

相关阅读

浏览器自动化允许您在Multilogin的浏览器配置文件中自动执行任务。从创建简单的自动化脚本到复杂的Web爬虫,可以搜索、收集Web数据并与之交互。

Multilogin浏览器自动化基于Selenium WebDriver

通常情况下,如果您运行Selenium代码,首先将连接到Firefox(Gecko)或Chrome驱动,然后设置您所需要的功能。而将Multilogin与Selenium代码结合使用时,您无需这样操作。

您将使用Remote Web Driver程序,通过本地端口连接到Multilogin应用或某浏览器配置文件,设置所需功能,在预定义的浏览器配置文件中执行Selenium命令。

支持的语言

Selenium框架提供了多种可搭配使用的语言,因此Multilogin自动化也可以在多种编码语言上运行。但是目前,我们仅为Java和Python供技术支持。

在 Multilogin 中使用Selenium

定义Multilogin端口:

您需要提前定义软件端口以使用Selenium自动化。以下是定义端口的方法:

  1. 前往C:\Users\%username%\.multiloginapp.com路径并打开app.properties文件
  2. 添加此语句: multiloginapp.port=[PORT_NUMBER]
端口号的范围为10000 ~ 49151
  1. 保存 app.properties 文件

随后,您就可以通过定义的端口连接到Multiogin了。

更多相关信息,您可以查阅此指导文章

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
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
driver = webdriver.Remote(command_executor=json['value'])

#Perform automation
driver.get('https://multilogin.com/')
print(driver.title)
driver.quit()

相关视频


点击下方按钮,查看我们的最新动态,研究和教程!


您遇到的问题是否已经解决?