我一直在嘗試通過 Selenium 制作的腳本修改路由器 SSID,問題是我無法獲取路由器頁面生成的任何 JS 元素。我一直在嘗試使用預期條件以及您能想到的任何東西,但沒有成功。
我使用的命令示例:
element: WebElement = WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable((By.XPATH, xpath)))
我通過嘗試在 Chrome 的“控制臺”選項卡中使用 JavaScript 進行一些查詢來進一步調查。我發現如果我在檢查頁面上的任何元素之前嘗試使用任何查詢選擇器選擇任何元素,它將不起作用。
示例查詢:
document.querySelector("#WIFIIconInfo")
我該如何解決這種奇怪的行為?
編輯:不知道這些是否有用的資訊,但它們仍然是資訊。該網站建立在以下兩點之上:
Web frameworks
Microsoft ASP.NET
JavaScript libraries
jQuery - 1.11.1
(Wappalyzer Output)
編輯 2:我按照@JeffC 的建議查看了 HTML,發現div我想單擊的內容位于以下iframe.
<iframe id="menuIframe" frameborder="0" width="100%" height="100%" marginheight="0" marginwidth="0" class="AspWidth" scrolling="no" overflow="hidden" src="CustomApp/mainpage.asp"></iframe>
他的解決方案確實是對的。
uj5u.com熱心網友回復:
我發現如果我在檢查頁面上的任何元素之前嘗試使用任何查詢選擇器選擇任何元素,它將不起作用。
這告訴我您想要的元素在 IFRAME 內。當您檢查頁面上的元素時,開發工具會自動將背景關系切換到包含 IFRAME。
使用 Selenium,您需要切換到 IFRAME,與 IFRAME 中的任何元素進行互動,然后將背景關系切換回主頁。
我們沒有任何相關的 HTML,所以這是一個通用示例。
# wait for the IFRAME and switch to it
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe")))
# do stuff to elements in the IFRAME
...
# switch back to the main content of the page
driver.switch_to.default_content()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518196.html
下一篇:刮a.href回傳空白值?
