鍍金池/ 問答/Python/ selenium怎樣重新使用打開過的瀏覽器?

selenium怎樣重新使用打開過的瀏覽器?

我用flask寫了一個(gè)接口。使用這個(gè)接口的時(shí)候,可以啟動(dòng)selenium訪問網(wǎng)頁,獲取網(wǎng)頁的信息。

我希望不用每次訪問的時(shí)候,都初始化一個(gè)driver(這樣太浪費(fèi)時(shí)間)。因此我寫成了每個(gè)請(qǐng)求過來,就打開一個(gè)新的窗口,這樣就可以不用初始化了。

我在本地運(yùn)行app.py的時(shí)候,可以實(shí)現(xiàn)這個(gè)功能。但是部署的時(shí)候(apache,mod_wsgi,flask)就不行了,每次請(qǐng)求過來,它就重新初始化一個(gè)driver。(url不變,多次訪問也會(huì)實(shí)現(xiàn)不初始化driver,只打開新窗口的功能;但是url不同的時(shí)候,就不能實(shí)現(xiàn)預(yù)期的功能。)

我曾想過是不是由于每次訪問的時(shí)候,都重新運(yùn)行一次app.py。我對(duì)mod_wsgi不是很熟。

然后也試過將driver對(duì)象保存在應(yīng)用上下文和g里面,但是也是不行的。每次請(qǐng)求的g都不一樣。

今天我想過用redis,pickle保存driver對(duì)象,這個(gè)似乎可行。問題是,pickle.dumps(driver)的時(shí)候,報(bào)錯(cuò)了:
TypeError: can't pickle _thread.lock objects

唉,這個(gè)問題困擾我好幾天了,有人能幫助一下我嗎?

回答
編輯回答
陌如玉

如果是單線程,就把driver設(shè)置成全局變量就好了啊

2018年3月1日 01:09