Python 在MacOs(Catalina)中的Selenium上运行边缘浏览器

Python 在MacOs(Catalina)中的Selenium上运行边缘浏览器,python,macos,selenium,microsoft-edge,chromium,Python,Macos,Selenium,Microsoft Edge,Chromium,有人能帮我运行一个Python&MacOS(catalina)吗 我曾尝试在windows环境下使用它,工作正常,但不幸的是,无法在mac上使用。似乎需要一些配置 from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.firefox.options import Options as options from s

有人能帮我运行一个Python&MacOS(catalina)吗

我曾尝试在windows环境下使用它,工作正常,但不幸的是,无法在mac上使用。似乎需要一些配置

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.firefox.options import Options as options
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By



class Website:
    def __init__(self):

      self.driver = webdriver.Edge(executable_path='/Users/dannyk/Downloads/msedgedriver')

    def reach_web_docker(self):
        self.driver.maximize_window()
        self.driver.get('http://127.0.0.1:9080/')



if __name__ == '__main__':
    reg1 = Website()
    reg1.reach_web_docker()
我得到了以下错误,不幸的是,这并不能真正解释问题所在

>> runfile('/Users/dannyk/PycharmProjects/new_prj/t1.py', wdir='/Users/dannyk/PycharmProjects/new_prj')
/Users/dannyk/PycharmProjects/new_prj/t1.py:16: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
  self.driver = webdriver.Edge(executable_path='/Users/dannyk/Downloads/msedgedriver')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "/Applications/PyCharm CE.app/Contents/plugins/python-ce/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/dannyk/PycharmProjects/new_prj/t1.py", line 57, in <module>
    reg1 = Website()
  File "/Users/dannyk/PycharmProjects/new_prj/t1.py", line 16, in __init__
    self.driver = webdriver.Edge(executable_path='/Users/dannyk/Downloads/msedgedriver')
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/edge/webdriver.py", line 65, in __init__
    super(WebDriver, self).__init__(DesiredCapabilities.EDGE['browserName'], "ms",
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/chromium/webdriver.py", line 79, in __init__
    RemoteWebDriver.__init__(
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 183, in __init__
    self.start_session(capabilities, browser_profile)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 280, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 349, in execute
    self.error_handler.check_response(response)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 240, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: No matching capabilities found
Stacktrace:
0   msedgedriver                        0x000000010e547ef9 msedgedriver + 12562169
1   msedgedriver                        0x000000010e486a23 msedgedriver + 11770403
2   msedgedriver                        0x000000010da59d2d msedgedriver + 1101101
3   msedgedriver                        0x000000010d99465e msedgedriver + 292446
4   msedgedriver                        0x000000010d993e82 msedgedriver + 290434
5   msedgedriver                        0x000000010d9954fd msedgedriver + 296189
6   msedgedriver                        0x000000010d991cb3 msedgedriver + 281779
7   msedgedriver                        0x000000010d96ac2d msedgedriver + 121901
8   msedgedriver                        0x000000010d96bc25 msedgedriver + 125989
9   msedgedriver                        0x000000010e4e109f msedgedriver + 12140703
10  msedgedriver                        0x000000010e4f39da msedgedriver + 12216794
11  msedgedriver                        0x000000010e4f3769 msedgedriver + 12216169
12  msedgedriver                        0x000000010e49e539 msedgedriver + 11867449
13  msedgedriver                        0x000000010e4f3f63 msedgedriver + 12218211
14  msedgedriver                        0x000000010e4ca783 msedgedriver + 12048259
15  msedgedriver                        0x000000010e510c24 msedgedriver + 12336164
16  msedgedriver                        0x000000010e551697 msedgedriver + 12600983
17  libsystem_pthread.dylib             0x00007fff69056109 _pthread_start + 148
18  libsystem_pthread.dylib             0x00007fff69051b8b thread_start + 15
>运行文件('/Users/dannyk/PycharmProjects/new_prj/t1.py',wdir='/Users/dannyk/PycharmProjects/new_prj')
/Users/dannyk/PycharmProjects/new_prj/t1.py:16:DeprecationWarning:executable_路径已被弃用,请传入服务对象
self.driver=webdriver.Edge(可执行文件_path='/Users/dannyk/Downloads/msedgedriver')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Applications/PyCharm-CE.app/Contents/plugins/python-CE/helpers/pydev/_-pydev_-bundle/pydev_-umd.py”,第197行,在runfile中
pydev_imports.execfile(文件名、全局变量、本地变量)#执行脚本
文件“/Applications/PyCharm-CE.app/Contents/plugins/python-CE/helpers/pydev/_-pydev_-imps/_-pydev_-execfile.py”,execfile中第18行
exec(编译(内容+“\n”,文件,'exec'),全局,loc)
文件“/Users/dannyk/PycharmProjects/new_prj/t1.py”,第57行,在
reg1=网站()
文件“/Users/dannyk/PycharmProjects/new_prj/t1.py”,第16行,在__
self.driver=webdriver.Edge(可执行文件_path='/Users/dannyk/Downloads/msedgedriver')
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/selenium/webdriver/edge/webdriver.py”,第65行,在__
超级(WebDriver,self)。\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/selenium/webdriver/chromium/webdriver.py”,第79行,在__
RemoteWebDriver.\uuu init__(
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第183行,在__
启动会话(功能、浏览器配置文件)
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,第280行,在启动会话中
响应=self.execute(Command.NEW_会话,参数)
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/selenium/webdriver/remote/webdriver.py”,执行中第349行
self.error\u handler.check\u响应(响应)
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/selenium/webdriver/remote/errorhandler.py”,第240行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.SessionNotCreateException:消息:未创建会话:未找到匹配的功能
堆栈跟踪:
0 msedgedriver 0x000000010e547ef9 msedgedriver+12562169
1 msedgedriver 0x000000010e486a23 msedgedriver+11770403
2 msedgedriver 0x000000010da59d2d msedgedriver+1101101
3 MSEdge驱动程序0x000000010d99465e MSEdge驱动程序+292446
4 msedgedriver 0x000000010d993e82 msedgedriver+290434
5 msedgedriver 0x000000010d9954fd msedgedriver+296189
6 msedgedriver 0x000000010d991cb3 msedgedriver+281779
7 MSEdge驱动程序0x000000010d96ac2d MSEdge驱动程序+121901
8 msedgedriver 0x000000010d96bc25 msedgedriver+125989
9 msedgedriver 0x000000010e4e109f msedgedriver+12140703
10 msedgedriver 0x000000010e4f39da msedgedriver+12216794
11 msedgedriver 0x000000010e4f3769 msedgedriver+12216169
12 msedgedriver 0x000000010e49e539 msedgedriver+11867449
13 msedgedriver 0x000000010e4f3f63 msedgedriver+12218211
14 msedgedriver 0x000000010e4ca783 msedgedriver+12048259
15 msedgedriver 0x000000010e510c24 msedgedriver+12336164
16 MSEdge驱动程序0x000000010e551697 MSEdge驱动程序+12600983
17 libsystem_pthread.dylib 0x00007fff69056109_pthread_start+148
18 libsystem_pthread.dylib 0x00007fff69051b8b线程开始+15

我尝试检查错误消息,发现此异常

selenium.common.exceptions.SessionNotCreateDexException:消息: 未创建会话:未找到匹配的功能

看起来您需要传递在MAC OS上运行此代码的功能

下面是您可以尝试传递的功能示例

desired_cap = {
"os" : "OS X",
"os_version" : "Catalina",
"browser" : "Edge",
"browser_version" : "83.0",
"browserstack.local" : "false",
"browserstack.selenium_version" : "3.5.2"
}
您可以根据您的环境修改这些值

参考:

您需要在此行中作为参数传递所需的功能

self.driver.get('http://127.0.0.1:9080/')

您可以做一个测试,并让我们知道您的测试结果。

因此,为了回答这个问题,感谢@Deepak MSFT,它成功了

这一切都需要两件事:

  • 发送驱动程序路径(在我的情况下,我需要将其移动到本地,然后发送abs路径)

  • 发送功能。另外,我已经删除了所有功能,并放置了一个空字典

  • 这是密码

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.firefox.options import Options as options
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    
    
    desired_cap = {
    }
    
    class Website:
        def __init__(self):
    
          self.driver = webdriver.Edge(executable_path='/Users/dannyk/PycharmProjects/new_prj/msedgedriver',capabilities=desired_cap)
    
        def reach_web_docker(self):
            self.driver.maximize_window()
            self.driver.get('http://127.0.0.1:9080/')
    
    
    if __name__ == '__main__':
        reg1 = Website()
        reg1.reach_web_docker()