亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Selenium的JavascriptExecutor將<script>添加到Head中

如何使用Selenium的JavascriptExecutor將<script>添加到Head中

慕碼人2483693 2022-08-03 16:03:00
總結我想找出一種方法,使用 's 將標簽添加到 DOM 的頭部,或者任何其他方法都可以。<script>SeleniumJavascriptExecutor我嘗試了很多方法,也發現了一些類似的主題,但沒有一個解決了我的問題,這就是為什么我覺得有必要在這里問它。例如:這個問題中建議的解決方案并沒有解決我的問題。有些人說這對他們有用,但不,它不適合我。我一直在嘗試執行什么?以下是我要執行的代碼的小片段:            WebDriver driver = new FirefoxDriver();            JavascriptExecutor jse = (JavascriptExecutor) driver;            jse.executeScript("var s = document.createElement('script');");            jse.executeScript("s.type = 'text/javascript';");            jse.executeScript("s.text = 'function foo() {console.log('foo')}';");            jse.executeScript("window.document.head.appendChild(s);");我只是跳過了上面的代碼,您可以使用等導航到網頁,然后嘗試執行腳本。driver.get()另外,將包含我想使用的實際腳本,所以我只是放了一個函數來給出這個想法。s.textfoo()上面的代碼會在您運行它時引發此錯誤:Exception in thread "main" org.openqa.selenium.JavascriptException: ReferenceError: s is not defined到目前為止,我已經嘗試了在互聯網上找到的所有可能的解決方案,但似乎沒有一個有效。
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

OP提出了以下解決方案:


jse.executeScript("var s=window.document.createElement('script');" + 

"s.type = 'text/javascript';" + "s.text = function foo() {console.log('foo')};" + 

"window.document.head.appendChild(s);");


查看完整回答
反對 回復 2022-08-03
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

首先,此行無效。

    jse.executeScript("s.text = 'function foo() {console.log('foo')}';");

請注意如何將單引號文本括在單引號中。將一個集合用作“\””

我個人會通過做(編輯使其成為全局函數)來做到這一點:

using OpenQA.Selenium.Support.Extensions;

driver.ExecuteJavascript("window.foo = function foo() {console.log('foo')}");

就這么簡單。您正在通過執行此操作將 foo 注冊為方法。執行此javascript后,您可以手動進入瀏覽器開發人員工具并調用“foo()”進行檢查。此外,您可以通過直接在控制臺中注冊來檢查這一點。只需在瀏覽器控制臺中輸入“function foo() {console.log('foo')}”,然后調用“foo()”。

無需將其添加為腳本標記。

編輯#2:我修復了上面的代碼建議,以便將方法分配給窗口,從而可以全局訪問,并且在javascript執行器運行代碼的匿名腳本之外。這不起作用的原始問題已通過此解決,至少在我對它的測試中。


查看完整回答
反對 回復 2022-08-03
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號