第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

慕碼人2483693 2022-08-03 16:03:00
總結(jié)我想找出一種方法,使用 's 將標(biāo)簽添加到 DOM 的頭部,或者任何其他方法都可以。<script>SeleniumJavascriptExecutor我嘗試了很多方法,也發(fā)現(xiàn)了一些類似的主題,但沒有一個(gè)解決了我的問題,這就是為什么我覺得有必要在這里問它。例如:這個(gè)問題中建議的解決方案并沒有解決我的問題。有些人說這對(duì)他們有用,但不,它不適合我。我一直在嘗試執(zhí)行什么?以下是我要執(zhí)行的代碼的小片段:            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);");我只是跳過了上面的代碼,您可以使用等導(dǎo)航到網(wǎng)頁,然后嘗試執(zhí)行腳本。driver.get()另外,將包含我想使用的實(shí)際腳本,所以我只是放了一個(gè)函數(shù)來給出這個(gè)想法。s.textfoo()上面的代碼會(huì)在您運(yùn)行它時(shí)引發(fā)此錯(cuò)誤:Exception in thread "main" org.openqa.selenium.JavascriptException: ReferenceError: s is not defined到目前為止,我已經(jīng)嘗試了在互聯(lián)網(wǎng)上找到的所有可能的解決方案,但似乎沒有一個(gè)有效。
查看完整描述

2 回答

?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

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);");


查看完整回答
反對(duì) 回復(fù) 2022-08-03
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

首先,此行無效。

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

請(qǐng)注意如何將單引號(hào)文本括在單引號(hào)中。將一個(gè)集合用作“\””

我個(gè)人會(huì)通過做(編輯使其成為全局函數(shù))來做到這一點(diǎn):

using OpenQA.Selenium.Support.Extensions;

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

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

無需將其添加為腳本標(biāo)記。

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


查看完整回答
反對(duì) 回復(fù) 2022-08-03
  • 2 回答
  • 0 關(guān)注
  • 187 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)