嗨,我正在尋找有關硒如何在網站上搜索元素的解釋。對我們來說,我們使用inspect元素來查找一個元素的id、name、xpath等,然后放到selenium中做一些動作。硒如何找到我們告訴它要找到的元素?它是否像我們一樣 ctrl shift J 并檢查元素?
注意:我不是在尋找如何編碼 selenium 來查找元素。
uj5u.com熱心網友回復:
Html 頁面只是具有像樹一樣結構化元素的檔案。
一般來說
Selenium 使用元素定位器來查找事物。定位器作業懶惰。當您查找元素時,Selenium 首先檢查它是否已快取。如果沒有,它會使用SearchContext使用給定的機制(例如通過 XPathEvaluator)查找當前背景關系中的所有元素(例如 DOM 元素)。
如果您要查找一個元素,則 SearchContext 運行 findElement();如果您要查找多個元素,則運行 findElements()。簡單來說, findElement() 嘗試運行 JavaScript 腳本以異步查找元素。如果不能,它會嘗試使用一個有趣的呼叫方法直接找到它——xpathWizardry即使用 XPathEvaluator 求值。
XPath
當您在 Selenium 中使用 XPath(XML 路徑語言)時,這只是一種在類似 XML 的檔案(例如 html)的層次結構中導航的方法。XPath 使用非 XML 語法提供一種靈活的方式來指向 XML 檔案的不同部分。selenium 在內部使用W3 XPathEvaluator,它計算 XPath 運算式。
您可以在此處學習 XPathEvaluator 源代碼。
uj5u.com熱心網友回復:
搜索背景關系
所述SearchContext是一個存在于硒的webdriver層級最上面的介面。它有兩個抽象的方法,因為 SearchContext 是一個介面。
findElement():使用給定的方法查找第一個WebElement。WebElement findElement?(By by) Parameters: by - The locating mechanism Returns: The first matching element on the current context Throws: NoSuchElementException - If no matching elements are foundfindElements():使用給定的機制查找當前背景關系中的所有元素。java.util.List<WebElement> findElements?(By by) Parameters: by - The locating mechanism to use Returns: A list of all WebElements, or an empty list if nothing matches
uj5u.com熱心網友回復:
瀏覽器 DOM 通過可用于定位元素的 javascript 公開諸如 querySelector、querySelectorAll、getElementById、getElementsByClassName、getElementsByName 等 API。例如 :
- 導航到www.bing.com
- 按 F12 打開開發者控制臺。
- Enter
document.querySelector("#sb_form_q")定位由 css 選擇器輸入的搜索框。我在這里使用 #Id 作為 css 選擇器。 - 輸入
document.getElementById("sb_form_q")以通過其 ID 定位搜索框輸入 - Enter
document.getElementsByClassName("sb_form_q")[0]定位搜索框輸入的類名 - Enter
document.getElementsByName("q")[0]定位搜索框輸入的名稱
以上所有應該回傳"<input id="sb_form_q" name="q" type="search" maxlength="1000" autocomplete="off" aria-label="Enter your search term" autofocus="" aria-controls="sw_as" aria-autocomplete="both" aria-owns="sw_as" aria-activedescendant="sa_5004">"相同的結果。
Selenium 使用這些 DOM API 來檢索元素。然而,selenium 可能會通過一些其他機制(例如 C )而不是通過執行 javascript 來使用這些 DOM API 以加快執行速度。XPath查找是瀏覽器 DOM API 不直接支持的。Selenium 可能為 XPath 查找提供了它自己的實作,或者依靠某些瀏覽器 polyfill 來實作此功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369597.html
