【问题标题】:How to pass Selenium WebDriver instances between functions in Python?如何在 Python 中的函数之间传递 Selenium WebDriver 实例?
【发布时间】:2018-08-02 20:30:35
【问题描述】:

我有一个处理登录网站的函数。然后我返回 webdriver 实例,以便我可以将它传递给另一个实际处理获取我需要的信息的函数。

由于某种原因,我无法使用返回的驱动程序实例调用我的第二个函数。

想知道是否有人对我如何将 webdriver 实例传递给另一个函数有任何见解?谢谢。

【问题讨论】:

  • “由于某种原因,我无法使用返回的驱动程序实例调用我的第二个函数。”为什么不呢?
  • @SuperStew 我收到一个错误,阻止我执行第二个函数中的进程
  • 您需要发布一些代码和错误
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及必要的最短代码 重现它在问题本身。没有明确的问题陈述的问题对其他读者没有用处。请参阅:minimal reproducible example

标签: python function selenium webdriver


【解决方案1】:

如何将 webdriver 实例传递给另一个函数?

您将从第一个函数返回实例并使用它调用第二个函数。

在下面的示例中,我定义了 2 个函数。一个 webdriver 在func1 中被实例化,它返回实例。然后我调用func2,它将驱动程序实例作为参数。

from selenium import webdriver

def func1():
    driver = webdriver.Chrome()
    driver.get('https://example.com')
    return driver

def func2(driver):
    return driver.title

if __name__ == '__main__':
    driver = func1()
    title = func2(driver)
    print(title)
    driver.quit()

此代码将启动浏览器 (Chrome),导航到站点 (https://example.com),打印页面标题(“示例域”),然后退出浏览器。

【讨论】:

    【解决方案2】:

    或者,扩展 Corey Goldberg 的答案。将驱动程序的引用简单地传递给使用它的所有函数是非常好的。

    from selenium import webdriver
    
    def func1(driver):
        driver.get('https://example.com')
    
    def func2(driver):
        return driver.title
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        func1(driver)
        title = func2(driver)
        print(title)
        driver.quit()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多