用 selenium 驱动 Opera python

Drive Opera with selenium python

我添加到我的环境变量

SELENIUM_SERVER_JAR = C:\selenium_drivers\selenium-server-standalone.jar

我在这里下载的http://selenium-release.storage.googleapis.com/index.html?path=2.46/

Python 脚本:

from selenium import webdriver

webdriver.Opera()

输出:

13:37:37.906 INFO - Launching a standalone Selenium Server
13:37:38.104 INFO - Java: Oracle Corporation 25.45-b02
13:37:38.104 INFO - OS: Windows 8 6.2 x86
13:37:38.132 INFO - v2.46.0, with Core v2.46.0. Built from revision 87c69e2
13:37:38.269 INFO - Driver class not found: com.opera.core.systems.OperaDriver
13:37:38.275 INFO - Driver provider com.opera.core.systems.OperaDriver is not registered
13:37:38.630 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:53024/wd/hub
13:37:38.631 INFO - Selenium Server is up and running
13:37:47.892 INFO - Executing: [new session: Capabilities [{browserName=opera, javascriptEnabled=true, version=, platform=ANY}]])
13:37:47.907 INFO - Creating a new session for Capabilities [{browserName=opera, javascriptEnabled=true, version=, platform=ANY}]
Started InternetExplorerDriver server (32-bit) 2.43.0.0
Listening on port 43192
13:37:51.090 INFO - Done: [new session: Capabilities [{browserName=opera, javascriptEnabled=true, version=, platform=ANY}]]

我原以为 jar 已经定义了所有内容,为什么我找不到驱动程序 class?

根据您的问题,您使用的似乎是适用于 Opera 12 及更早版本的旧驱动程序。假设您尝试使用最新版本的 Opera,您需要使用以下站点提供的驱动程序:OperaChromiumDriver

该站点列出了示例 python 代码,我已经确认它可以在我的机器上打开和驱动 Opera:Python Examples for OperaChromiumDriver

import time

from selenium import webdriver
from selenium.webdriver.chrome import service


webdriver_service = service.Service('C:\Users\Kris\Downloads\WinPython-32bit-2.7.9.2\operadriver.exe')
webdriver_service.start()

driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)

driver.get('https://www.google.com/')
input_txt = driver.find_element_by_name('q')
input_txt.send_keys('operadriver\n')

time.sleep(5) #see the result
driver.quit()

编辑: 查看 selenium 的更改日志,看起来对基于 Presto 的 Operas 的支持在 2.45 之后停止,这就是您收到错误消息的原因:CHANGELOG

下面的代码适用于我的以下设置。希望这有帮助。

  • Python: 3.4.0
  • 歌剧:42.0.2393.94
  • 硒:3.0.2
  • Chrome 驱动程序:2.27.440174

    import os
    
    from selenium import webdriver
    from selenium.webdriver.common import desired_capabilities
    from selenium.webdriver.opera import options
    
    _operaDriverLoc = os.path.abspath('E:\Envs\PySelEnv\selserver\chromedriver.exe')  # Replace this path with the actual path on your machine.
    _operaExeLoc = os.path.abspath('E:\Program Files\Opera\42.0.2393.94\opera.exe')   # Replace this path with the actual path on your machine.
    
    _remoteExecutor = 'http://127.0.0.1:9515'
    _operaCaps = desired_capabilities.DesiredCapabilities.OPERA.copy()
    
    _operaOpts = options.ChromeOptions()
    _operaOpts._binary_location = _operaExeLoc
    
    # Use the below argument if you want the Opera browser to be in the maximized state when launching. 
    # The full list of supported arguments can be found on http://peter.sh/experiments/chromium-command-line-switches/
    _operaOpts.add_argument('--start-maximized')   
    
    self._browserDriver = webdriver.Chrome(executable_path = _operaDriverLoc, chrome_options = _operaOpts, desired_capabilities = _operaCaps)
    
from selenium import webdriver

driver=webdriver.Chrome('C:\Users\abc\Projects\TestProject\operadriver.exe')

driver.get('https://www.google.com/')

/*

只需给出 operadriver.exe 的位置 ... 如上所述它将打开 Opera 浏览器... 而不是 chrome 浏览器


您可以在这里下载 Opera 驱动程序:https://github.com/operasoftware/operachromiumdriver

*/

我用 webdriver_manager package 用 selenium 驱动 Opera。

安装:

pip install webdriver-manager

设置:

from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager

driver = webdriver.Opera(executable_path=OperaDriverManager().install())

使用:

driver.get("https://www.google.com")