首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Kameleo和Selenium加载多个chrome浏览器?

如何使用Kameleo和Selenium加载多个chrome浏览器?
EN

Stack Overflow用户
提问于 2022-04-10 22:00:24
回答 2查看 135关注 0票数 1

我想使用Kameleo的Selenium加载多个chrome浏览器。有人能给我一些示例代码来说明它是如何完成的吗?我的代码的selenium部分是:

代码语言:javascript
复制
options = webdriver.ChromeOptions()
    options.add_experimental_option('kameleo:profileId', profile.id)
    driver = webdriver.Remote(
        command_executor=f'{kameleoBaseUrl}/webdriver',
        options=options
    )

    driver.get('https://www.youtube.com/watch?v=wLTp9ni9mKc&t=1s')
    driver.find_element(By.XPATH, "//button[@aria-label='Play']").click()
EN

回答 2

Stack Overflow用户

发布于 2022-04-13 12:21:55

我看到您正在尝试使用您的python代码中的卡梅洛氏 Selenium隐形驱动程序进行操作。您正在尝试在两个浏览器中并行执行相同的操作。在这里,我创建了一个使用threading工作的代码片段

代码语言:javascript
复制
from kameleo.local_api_client.kameleo_local_api_client import KameleoLocalApiClient
from kameleo.local_api_client.builder_for_create_profile import BuilderForCreateProfile
from selenium import webdriver
from selenium.webdriver.common.by import By
from threading import Thread

kameleo_port = 5050
client = KameleoLocalApiClient(f'http://localhost:{kameleo_port}')


def run_browser():
    base_profiles = client.search_base_profiles(
        device_type='desktop',
        browser_product='chrome'
    )

    # This line may be added as well after .set_recommended_defaults() \ line:
    # .set_proxy('socks5', Server(host='<proxy_host>', port=1080, id='<username>', secret='<password>')) \
    create_profile_request = BuilderForCreateProfile \
        .for_base_profile(base_profiles[0].id) \
        .set_recommended_defaults() \
        .build()

    profile = client.create_profile(body=create_profile_request)

    client.start_profile(profile.id)

    options = webdriver.ChromeOptions()
    options.add_experimental_option("kameleo:profileId", profile.id)
    driver = webdriver.Remote(
        command_executor=f'http://localhost:{kameleo_port}/webdriver',
        options=options
    )

    driver.get('https://www.youtube.com/watch?v=wLTp9ni9mKc&t=1s')
    driver.find_element(By.XPATH, "//button[@aria-label='Play']").click()


if __name__ == '__main__':
    Thread(target=run_browser).start()
    Thread(target=run_browser).start()

这段代码迫使Kameleo通过其局部API并行启动2个浏览器。每个浏览器都是在一个独立的环境中启动的,因此它们的浏览器指纹是不同的,所以网站会将它们看作是两个不同的设备。一旦浏览器启动,就可以使用命令来控制它们。

考虑为虚拟浏览器配置文件生成器设置代理。

代码语言:javascript
复制
.set_proxy('socks5', Server(host='<proxy_host>', port=1080, id='<username>', secret='<password>')) \

这将帮助您为Kameleo启动的每个浏览器提供不同的IP地址。

我使用本教程开始使用Kameleo,并将我的Python知识用于浏览器自动化。这里您可以在Python中找到有关同时运行函数的更多信息。

票数 2
EN

Stack Overflow用户

发布于 2022-04-10 22:28:55

如果您需要多次执行相同的操作,只需使用循环即可。例如:

代码语言:javascript
复制
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
options = webdriver.ChromeOptions()
options.add_experimental_option('kameleo:profileId', profile.id)
n=2 # set the number of browsers
for i in range(2):
    driver = webdriver.Remote(
    command_executor=f'{kameleoBaseUrl}/webdriver',
    options=options)
    url='https://app.powerbi.com/view?r=eyJrIjoiNjIwNzg5NzQtNzRlYS00YzFmLWJiNTUtOTM2MGEwY2FjOGJlIiwidCI6ImE3NWRkYWZlLWQ2MmYtNGIxOS04NThhLTllYzFhYjI1NDdkNCIsImMiOjl9'
    driver.get(url)
    driver.find_element(By.XPATH, "//button[@aria-label='Play']").click()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71820882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档