【问题标题】:How can I define driver = webdriver.Firefox without automatically opening the browser?如何在不自动打开浏览器的情况下定义 driver = webdriver.Firefox?
【发布时间】:2021-06-28 16:36:11
【问题描述】:

这是我的简化代码:

from selenium import webdriver

driver = webdriver.Firefox(executable_path=r"F:\geckodriver.exe")

class Acesso():
    def __init__(self):
        driver.get(link)

    def scroll():
        # Function
    driver.click()

    def url():
        # driver.get("https://google.com")

Acesso()

以这种方式编写它会使浏览器在我定义我的driver 变量后立即打开。有什么方法可以在不自动打开浏览器的情况下定义webdriver.Firefox()?我的目标是我想在我的__init__ 函数中定义driver 变量,这样我就可以向它传递一个参数。像这样的:

def __init__(self, agent):
    self.agent = agent
    driver = webdriver.Firefox(executable_path=r"F:\geckodriver.exe",firefox_profile=agent)

我的问题是这样写我不能在其他函数中使用driver 变量,如果我为每个函数定义变量,浏览器将在任何函数调用时自动打开。有什么解决办法吗?

【问题讨论】:

标签: python selenium webdriver


【解决方案1】:

试试这个:创建驱动程序变量,但将其初始化为 None。

然后,在每个使用它的函数中,检查它是否为 None,如果是,则将其设置为 Firefox(...) -- 如果不是 None,则假设它已设置为 Firefox 浏览器并继续进行.

然后浏览器应该打开第一个函数并保持打开/被重复使用。

【讨论】:

    【解决方案2】:
    from selenium import webdriver
    
    try:
        fireFoxOptions = webdriver.FirefoxOptions()
        fireFoxOptions.set_headless()
        brower = webdriver.Firefox(firefox_options=fireFoxOptions, executable_path=r"F:\geckodriver.exe")
    

    【讨论】:

    • 另一半在哪里-except ...
    • 我拿走了我的一些代码,却完全忘了删除 try ;)
    【解决方案3】:

    找到将driver 变量设置为global 的解决方案。现在我可以在我的函数内部定义并仍然在其他函数上使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-27
      • 2022-11-14
      • 2016-05-10
      • 1970-01-01
      • 2016-07-13
      • 2019-06-11
      • 1970-01-01
      • 2018-04-01
      相关资源
      最近更新 更多