我使用browsermob和selenium創建腳本以在網站上運行。我試圖用特定名稱來抓取頁面上的所有元素。我的問題是當我嘗試使用window.document.getElementsByName("name");
browsermob說window
未定義。你如何定義窗口?用browsermob在selenium中聲明窗口
1
A
回答
3
您需要調用selenium.getEval()。該調用的簽名是它需要一個字符串參數,該參數是將在瀏覽器中執行的JavaScript,並返回一個字符串,即返回結果的字符串表示。
最後一部分 - 字符串表示 - 很重要。雖然你肯定不能做到這一點在你的BrowserMob腳本:
var elements = window.document.getElementsByName("name");
你也可以這樣做:
var elements = selenium.getEval('return window.document.getElementsByName("name")');
雖然這第二個例子是更接近你需要做什麼,這不是相當有用,因爲getElementsByName返回一個DOM對象數組,它被轉換爲一個字符串。相反,你很可能需要決定你想用這些元素做什麼,並創建一個更大的JS代碼片段來評估,它會返回你想要的結果。
例如,這將返回第二個鏈接的href屬性頁面:
var secondHref = selenium.getEval('return window.document.getElementsByName("a")[1].href');
我希望幫助。您需要了解的主要內容是,雖然BrowserMob腳本可以用JavaScript編寫,但它運行的JavaScript環境在瀏覽器中爲而不是。要評估瀏覽器中的任意JavaScript,您必須通過getEval(),從而創建一些JavaScript中JavaScript的情況,這可能會引起一些混淆。
相關問題
- 1. Selenium with BrowserMob-Proxy
- 2. BrowserMob無法使用Selenium Webdriver
- 3. 在新窗口中打開rspec聲明
- 4. 在C#中用Selenium聲明Javascript值
- 5. 從在Angular中聲明的子窗口調用主窗口中的函數
- 6. Selenium-Webdriver-Object聲明
- 7. 在java中使用selenium切換窗口
- 8. 在窗口中使用jenkins運行selenium
- 9. 窗口變量聲明在React的index.js中不起作用
- 10. 在Selenium Webdriver(Java)中聲明整數值
- 11. 在Selenium中聲明並驗證
- 12. 窗口VS瓦爾聲明變數
- 13. 警報(模態窗口)框聲明
- 14. 無法聲明另一個窗口
- 15. $(窗口).load(()函數的聲明裏面?
- 16. Selenium - 彈出窗口
- 17. Selenium WebDriver - Ruby聲明語句
- 18. Selenium Webdriver/Ruby:聲明超時
- 19. 在Selenium中如何處理新窗口?
- 20. Selenium IDE卡在彈出窗口中javascript
- 21. 在selenium中的窗口處理(python)
- 22. 在Selenium Webdriver中處理多個窗口
- 23. 在Selenium中處理彈出窗口
- 24. 接口聲明
- 25. 聲明接口
- 26. Xwindow父窗口中的透明窗口
- 27. 在javascript中聲明窗口屬性的值undefined
- 28. 如何在Qt Creator的主窗口中聲明對象?
- 29. 窗口小部件的聲明。在onCreateView中還是外部?
- 30. 如何在QT中創建聲明窗口
謝謝。我在詢問它後發現了大部分內容,但我有 selenium.getEval('window.document.getElementsByName(「a」)[1] .href'); 回報是做什麼的? – chromedude 2010-08-19 20:55:25