簡體   English   中英

即使實例由方法返回,Python selenium 驅動程序實例也未定義

[英]Python selenium driver instance not defined even though instance is returned by method

我在 Python 3.7 中使用 Selenium 和 Firefox 和 gecko 驅動程序。 我有一種方法可以調用另一種方法來登錄站點。 登錄方法創建一個驅動程序實例,登錄並返回驅動程序實例。 然后應該繼續使用原始方法,但我收到錯誤'driver' is not defined 我做了一些研究,據我所知,我做的一切都是正確的。 這是我所擁有的,我只是剪掉了很多頁面導航:

def navigate():
   login()
   driver.get("http://www.example.com")

def login():
   driver = webdriver.Firefox(executable_path="./geckodriver.exe")
   ...(login code here)
   return driver

調用導航方法時,Firefox 會打開並正常登錄,但在轉到示例 URL 時,它說驅動程序未定義。 我無法弄清楚我做錯了什么。 我不確定為什么它說驅動程序未定義。

編輯:我剛剛發現如果我將驅動程序設為全局,它會起作用,但為什么通過返回它不起作用? 我不一定需要它是全球性的。

由於您沒有發布代碼,因此只能猜測……但是,聽起來您只是沒有將返回的對象分配給driver變量。

該問題存在於您提供的不完整代碼中,它應該如下所示:

def navigate():
   driver = login()
   driver.get("http://www.example.com")

def login():
   driver = webdriver.Firefox(executable_path="./geckodriver.exe")
   ...(login code here)
   return driver

這里的變化是現在driver被分配了返回的login()對象的值。 它在將driver為全局時起作用,因為之后navigate()函數可以從login()看到driver對象。

奇怪的是您沒有收到/注意到未定義的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM