[英]What is setElementConverter and how does it work in Selenium WebDriver?
我在查找頁面刷新的元素時遇到問題。 現在嘗試在StaleElementReferenceException
下面的元素上執行任何StaleElementReferenceException
,並且消息Element is no longer valid
抬頭看這個網址
有上述裁判URL有關的說明 :
Should you wish to head down this route, the simplest hook point is to call setElementConverter
setElementConverter
使用了什么或如何使用? 谷歌搜索了一下,無法找到所述方法的實際實現。
我認為你可能會通過專注於setElementConverter
來走錯路。 正如您鏈接的文檔頁面所示,如果元素過時,您應該嘗試再次找到該元素。
如果元素已被替換為相同的元素,則有用的策略是再次查找元素。
我想如果你是初學者Selenium用戶,你應該遵循這個建議並停在這里。 嘗試捕獲陳舊元素異常,然后再次找到該元素而不必擔心setElementConverter
。
如果您正在研究Selenium的更高級行為,或者為了滿足您對setElementConverter
的好奇心,那么以下幾行將更重要。
如果您自動執行此操作,請注意您可能會在競爭條件和潛在的瑕疵情況下打開測試。
...
如果您希望沿着這條路線前進,最簡單的掛鈎點就是調用setElementConverter。
文檔說你可能會嘗試寫一些聰明的東西 ,以便自動重復元素的查找 ,但這會導致邋and和競爭條件。 我認為實際上沒有人真的試圖以這種方式克服StaleElementExceptions,因為它復雜而且不穩定,最簡單的解決方案是在你自己的代碼中重新找到元素。
正如@SantiBailors在他的評論中指出的那樣,setElementConverter是RemoteWebDriver
的protected
方法。
看起來您將擴展RemoteWebDriver並將其他行為注入setElementConverter的“鈎子”,或者提供您自己的JsonToWebElementConverter
來更改該行為以自動重試或處理陳舊元素。
你怎么會這樣做,我不確定。 這是我的知識結束的地方,我從來沒有聽說有人接受這個建議掛鈎到setElementConverter
。 同樣,我想重申一下,這可能不是你想做的事情,而且很可能你只是想在你自己的代碼中再次找到這個元素,這可以通過使用try-更簡單地完成。捕獲StaleElementException
並在一些ThreadSleep或WebDriverWait之后再次嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.