【问题标题】:Code unreachable when adding Selenium ChromeOptions添加 Selenium ChromeOptions 时代码无法访问
【发布时间】:2022-07-16 13:52:28
【问题描述】:

由于某种原因,我的 Python 代码在添加了一系列 WebDriver 选项后显示为无法访问。有谁知道为什么会发生这种情况以及如何解决?

代码本身如下:

class DriverOptions(object):

  def __init__(self):

    self.options = Options()
    self.options.add_argument('--no-sandbox')
    self.options.add_argument('--start-maximized')
    self.options.add_argument('--start-fullscreen')
    self.options.add_argument('--single-process')
    self.options.add_argument('--disable-dev-shm-usage')
    self.options.add_argument("--incognito")
    self.options.add_argument('--disable-blink-features=AutomationControlled')
    self.options.add_argument('--disable-blink-features=AutomationControlled')
    self.options.add_experimental_option('useAutomationExtension', False)
    self.options.add_experimental_option("excludeSwitches", ["enable-automation"])
    self.options.add_argument("disable-infobars")

    self.helperSpoofer = Spoofer()

    self.options.add_argument('user-agent={}'.format(self.helperSpoofer.userAgent))
    self.options.add_argument('--proxy-server=%s' % self.helperSpoofer.ip)

【问题讨论】:

    标签: python-3.x selenium selenium-chromedriver web-crawler chrome-options


    【解决方案1】:

    可能您使用了太多参数,您可以删除一些不再相关的参数:

    • 删除 --no-sandbox 参数并以 非 root 用户身份执行。
    • 使用 --start-maximized--start-fullscreen,避免同时使用。
    • 如果您不使用 --no-sandbox,您也可以删除 --disable-dev-shm-usage'
    • 删除 --incognito 参数,因为它不再有效。
    • 删除 --disable-infobars 参数,因为它不再有效。
    • 只添加一次参数'--disable-blink-features=AutomationControlled'
    • 参数--single-process 在我看来是overkill,因为它在与浏览器相同的进程中运行渲染器和插件,而你可能想放弃它。

    一个更简单但有效的代码块可以是:

    class DriverOptions(object):
        def __init__(self):
            self.options = Options()
            self.options.add_argument('--start-maximized')
            self.options.add_argument('--disable-blink-features=AutomationControlled')
            self.options.add_experimental_option('useAutomationExtension', False)
            self.options.add_experimental_option("excludeSwitches", ["enable-automation"])
            self.options.add_argument("disable-infobars")
            self.helperSpoofer = Spoofer()
            self.options.add_argument('user-agent={}'.format(self.helperSpoofer.userAgent))
            self.options.add_argument('--proxy-server=%s' % self.helperSpoofer.ip)
    

    【讨论】:

      【解决方案2】:

      此错误存在于 selenium v​​4.1.3-4.1.4 中。

      更新 Selenium 库。

      【讨论】:

        【解决方案3】:

        Selenium 4.0 中有一个错误。只需尝试更新您的 pip 并简单地卸载 selenium 并重新安装它。它为我解决了一个问题。

        pip install selenium --upgrade
        

        【讨论】:

          猜你喜欢
          • 2020-02-12
          • 2017-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多