Python 使用SeleniumWebDriver打开应用程序(如zoom.us)

Python 使用SeleniumWebDriver打开应用程序(如zoom.us),python,python-3.x,selenium,selenium-webdriver,Python,Python 3.x,Selenium,Selenium Webdriver,我希望能够使用pure selenium webdriver在Chrome中打开缩放链接,然后将我重定向到zoom.us应用程序 当我执行此命令时: from selenium import webdriver def main(): driver = webdriver.Chrome() driver.get("https://zoom.us/j/000-000-000") main() 我收到一条弹出的消息 https://zoom.us wan

我希望能够使用pure selenium webdriver在Chrome中打开缩放链接,然后将我重定向到zoom.us应用程序

当我执行此命令时:

from selenium import webdriver


def main():
    driver = webdriver.Chrome()
    driver.get("https://zoom.us/j/000-000-000")


main()
我收到一条弹出的消息

https://zoom.us wants to open this application.
我必须按一个名为
openzoom.us
的按钮才能打开应用程序

有没有办法通过selenium按下这个弹出按钮。或者,是否有其他方法从chromedriver打开zoom

注意:我只想使用硒。我已经能够实现pyautogui来单击按钮,但这不是我想要的。

Java解决方案:

driver.switchTo().alert().accept();
Python的解决方案:

driver.switch_to.alert.accept()
Java解决方案:

driver.switchTo().alert().accept();
Python的解决方案:

driver.switch_to.alert.accept()

关于这个问题有很多重复的问题。这里有一个例子,可以肯定的是,selenium不能完成这样的工作,因为它只与chrome页面交互。我以前也遇到过这个问题,下面是我的解决方案。这看起来可能真的很不专业,但幸运的是它起作用了

我的解决方案的逻辑是更改chrome的设置,以跳过弹出窗口并直接打开所需的应用程序。然而,由于某些原因,Chrome团队在后一版本中删除了此功能,我们需要手动将其恢复。然后,我们知道,每当selenium开始做这件事时,它会打开一个新的Chrome页面,没有自定义设置,就像隐姓埋名页面一样。因此,我们需要做一些事情,让selenium使用您的自定义设置打开一个Chrome页面,这样我们就可以确保可以成功跳过我们手动更改为skip的弹出窗口

  • 在终端中键入以下代码

    defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true
    
    这使您能够更改跳过弹出窗口的设置,这是Chrome团队删除的功能

  • 重新启动Chrome,打开zoom(或任何应用程序)页面以显示弹出窗口。如果您正确执行第一步,您将能够看到“Open Zoom.us”旁边显示的复选框,表示如果您选中该复选框,chrome将在不询问的情况下打开此应用程序,即跳过此应用程序的弹出窗口

  • 现在我们需要让selenium通过我们的定制设置打开Chrome。要执行此操作,请键入“chrome://version“在普通Chrome的搜索选项卡中(不是selenium打开的自动页面)。转到“配置文件路径”,复制此路径,但不复制最后一个单词“default”。例如:

    /Users/MYNAME/Library/Application Support/Google/Chrome/Default
    
    这是我的配置文件路径,但我只复制除了最后一个单词Default之外的所有内容,所以这就是我需要复制的内容

    /Users/MYNAME/Library/Application Support/Google/Chrome/
    
    这是针对Mac用户的,但对于Windows,只有路径不同(以C://或其他开头),步骤相同

  • 我们使用“选项”让selenium打开带有自定义配置文件的页面。现在,您将看到selenium打开了一个包含所有帐户配置文件和设置的Chrome页面,它看起来就像您的普通Chrome页面一样

  • 运行你的代码。但在此之前,请记住手动退出所有CHROME会话。对于Mac,确保Chrome图标下没有圆点,表示Chrome在任何情况下都没有运行。这一步很关键,否则selenium会打开一个chrome页面,它就停在那里了


  • 以下是所有步骤。同样,这个解决方案是非常非正式的,我个人认为它不是这个问题的“解决方案”。我将努力找出一个更好的方法来实现这一目标。但我还是把它作为一种选择,因为我想它可能对像我这样的人有所帮助。希望它对你有用,祝你好运。

    关于这个问题有很多重复的问题。这里有一个例子,可以肯定的是,selenium不能完成这样的工作,因为它只与chrome页面交互。我以前也遇到过这个问题,下面是我的解决方案。这看起来可能真的很不专业,但幸运的是它起作用了

    我的解决方案的逻辑是更改chrome的设置,以跳过弹出窗口并直接打开所需的应用程序。然而,由于某些原因,Chrome团队在后一版本中删除了此功能,我们需要手动将其恢复。然后,我们知道,每当selenium开始做这件事时,它会打开一个新的Chrome页面,没有自定义设置,就像隐姓埋名页面一样。因此,我们需要做一些事情,让selenium使用您的自定义设置打开一个Chrome页面,这样我们就可以确保可以成功跳过我们手动更改为skip的弹出窗口

  • 在终端中键入以下代码

    defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true
    
    这使您能够更改跳过弹出窗口的设置,这是Chrome团队删除的功能

  • 重新启动Chrome,打开zoom(或任何应用程序)页面以显示弹出窗口。如果您正确执行第一步,您将能够看到“Open Zoom.us”旁边显示的复选框,表示如果您选中该复选框,chrome将在不询问的情况下打开此应用程序,即跳过此应用程序的弹出窗口

  • 现在我们需要让selenium通过我们的定制设置打开Chrome。要执行此操作,请键入“chrome://version“在普通Chrome的搜索选项卡中(不是selenium打开的自动页面)。转到“配置文件路径”,复制此路径,但不复制最后一个单词“default”。例如:

    /Users/MYNAME/Library/Application Support/Google/Chrome/Default
    
    这是我的配置文件路径,但我只复制除了最后一个单词Default之外的所有内容,所以这就是我需要复制的内容

    /Users/MYNAME/Library/Application Support/Google/Chrome/
    
    这是针对Mac用户的,但对于Windows,只有路径不同(以C://或其他开头),步骤相同

  • 我们使用“选项”让selenium打开带有自定义配置文件的页面。现在,您将看到selenium打开了一个包含所有帐户配置文件和设置的Chrome页面,它看起来就像您的普通Chrome页面一样

  • 运行你的代码。但在此之前,请记住手动退出所有CHROME会话。对于Mac,请确保下面没有圆点