我試圖理解以下代碼:
WebElement elem = driver.findElement(By.id("123"));
JavascriptExecutor js = (JavascriptExecutor) driver
js.executeScript("arguments[0].scrollIntoView(true);",elem);
我讀到這段代碼在 Facebook 等有分頁程序的地方很有用。
但我在想,如果元素只有在分頁后才能看到,這是否意味著第一行WebElement Elem = driver.findElement(By.id("123"));會拋出例外,因為該元素還不是Dom 的一部分(直到分頁到達此專案)?
uj5u.com熱心網友回復:
逐行解釋:
WebElement elem = driver.findElement(By.id("123"));
驅動程式是一個 Web 驅動程式參考,使用它您可以呼叫findElement方法并像在 Selenium 中的類idBy 的幫助下傳遞定位器一樣an abstract。
Selenium 與 HTMLDOM 對話和通信,所以如果你在HTMLDOM 中看到123它id,那么就不會有任何錯誤/例外。
但是,如果123id web 元素不存在或未正確呈現,那么您將看到與WebElement相關的例外。
JavascriptExecutor
基本上是Selenium-Java系結中的一個介面。
和這條線
js.executeScript("arguments[0].scrollIntoView(true);", elem);
這條線基本上采用了兩個引數。在您的情況下second arg是一個網路元素 ( elem)。并arguments[0]表示指定的 web 元素,我們在其上呼叫JS - scrollIntoView(true);方法。
uj5u.com熱心網友回復:
Selenium 通過 UI 模仿真實的用戶操作。
因此,作為用戶,您不能單擊未出現在可見螢屏視圖中的等元素。這就是為什么 Selenium 驅動程式會在您嘗試訪問此類元素時向您拋出例外的原因。
但是這個元素可以存在于 DOM 上。
它可以完全呈現??與否,取決于具體的技術,具體的網頁是如何實作的,但網頁元素會存在。
JavaScript 可以訪問不可見且仍未完全呈現的元素。因此,使用 JS,您可以執行 Selenium 驅動程式不允許您執行的多個操作。
但這不會通過 UI 模仿真實的人類用戶操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/390066.html
