2 回答

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

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ì)它的測試中。
添加回答
舉報(bào)