我有两个使用selenium的函数。一个登录,另一个在网站上执行身份验证操作。
from selenium import webdriver
def login(driver):
driver.get('website.com')
# login
return driver
def do_stuff(driver):
driver.get('website.com/things')
# do stuff
return driver
if __name__ == '__main__':
driver = webdriver.Firefox()
driver = login(driver)
driver = do_stuff(driver)
driver.close()
第一个函数成功登录,但当第二个函数运行时,我得到以下错误:
selenium.common.exceptions.InvalidSessionIdException: Message: Tried to run command without establishing a connection
我在第一个函数的末尾和第一个函数的开头检查了驱动程序的session_id
,它们是相同的。另外,它不应该成为脚本中的特定命令的问题,因为它在不分成两个函数时工作。如果有帮助,我可以提供一个更具体的代码示例。
我错过了什么,有什么办法让这件事起作用吗?
发布于 2022-04-10 23:01:34
我接受了您的代码,并做了一些简单的调整以适应我的环境,添加了print()
语句并执行了您的程序,看起来它运行完美到。
代码块:
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
def login(driver):
driver.get('https://www.selenium.dev/')
print("Within login")
return driver
def do_stuff(driver):
driver.get('https://www.selenium.dev/documentation/')
print("Within do_stuff")
return driver
if __name__ == '__main__':
driver = webdriver.Firefox(service=Service('C:\\BrowserDrivers\\geckodriver.exe'))
driver = login(driver)
driver = do_stuff(driver)
driver.quit()
控制台输出:
Within login
Within do_stuff
更新
如果仍然面临InvalidSessionIdException错误,则需要交叉检查所使用的二进制文件版本的兼容性。
您可以在selenium.common.exceptions.InvalidSessionIdException通过GeckoDriver在无头模式下使用GeckoDriver Selenium Firefox中找到相关的详细讨论
https://stackoverflow.com/questions/71821007
复制相似问题