簡體   English   中英

Selenium Webdriver中的LocalStorage

[英]LocalStorage in Selenium Webdriver

普通瀏覽器和Selenium瀏覽器是否有不同的LocalStorage存儲? 當我在selenium chrome上創建一個項目時,關閉瀏覽器后項目就消失了。 這是有意的嗎? 此外,我無法從普通的瀏覽器中讀取localStorage

編輯:更具體:

如果我在Selenium chrome瀏覽器中進入控制台

localStorage.setItem("test", "This is a test value"); localStorage.getItem("test"); =>按預期打印“這是一個測試值”

但是,如果我關閉Selenium chrome並重新打開它並嘗試從同一頁面localStorage.getItem("test");獲取相同的值localStorage.getItem("test"); => null

正如我從不同的帖子中讀到的,他們通常可以在Selenium中使用localStorage。

Javascript / Node

由於之前的答案所解釋的原因我遇到了同樣的問題; 本地存儲是每個配置文件,Selenium每次打開時都會顯示一個新配置文件和一個新的空本地存儲。

要在啟動selenium頁面時保持本地存儲,請使用相同的配置文件:

const webdriver = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const chromeProfilePath = 'C:\\Users\\Bob\\AppData\\Local\\Google\\Chrome\\User Data';

let options = new chrome.Options();
options.addArguments(`--user-data-dir=${chromeProfilePath}`); 
let driver = new webdriver.Builder()
    .forBrowser('chrome')
    .setChromeOptions(options)
    .build();

您可以通過在瀏覽器中鍵入chrome:// version來獲取配置文件路徑。

重要提示 :刪除該路徑末尾的“默認”,因為chrome會重新添加它。

問題是“數據存儲在哪里”? 答案是它存儲在瀏覽器中,而不是存儲在Selenium中。 因此,當最后一個瀏覽器選項卡或窗口關閉時,數據將永遠丟失。

如果您打開瀏覽器並使用localStorage.setItem,則數據將存儲在瀏覽器內存中。 然后從該會話打開另一個選項卡或窗口並僅關閉第一個選項卡/窗口,然后瀏覽器仍保留數據。 但是一旦關閉最后一個選項卡/窗口,數據就會丟失。

結論是,如果要跨瀏覽器窗口使用數據,則必須在關閉最后一個窗口或選項卡之前執行此操作。

認為localStorage在瀏覽器的重新開放中持久的 - 與sesionStorage相反,即使是關閉選項卡也無法生存,持久性是根據瀏覽器配置文件。

每當創建Chrome和Firefox瀏覽器會話時,默認情況下它們都會以新的(幾乎空白的)配置文件開始 - 現在您可以看到為什么您的localStorage數據被擦除了。

在您的示例中,當您在第一個會話中創建條目時,它們實際上已存儲; 但是一旦你開始新的會話,它就是一個不同的配置文件 - 它的localStorage是空的。

這種默認行為(從新的配置文件開始)確實有意義 - 如果瀏覽器的localStorage在瀏覽器重新打開之間共享/存活,則先前會話的數據會污染環境以進行連續測試,從而導致意外結果。 考慮會話在localStorage存儲“用戶想要從UI隱藏此信息”的設置的情況,后續套件的目的是驗證相同的信息 - 其環境從標准中更改(“污染”) ,並導致意外狀態。

可以覆蓋默認行為 - 可以使用特定的配置文件啟動瀏覽器,從而在需要時提供持久性。

我說Chrome和Firefox從一個新的配置文件開始,但IE是以默認的啟動,這可能會持續localStorage - 但不要引用我這個:)


最后,為了解決一個誤解 - localStorage保存在用戶的磁盤驅動器上(因此它被保留), 而不是在瀏覽器的內存中; sessionStorage純粹是內存(另一種保證瀏覽器重新打開的方法)。

暫無
暫無

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

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