gpt4 book ai didi

javascript - 访问 Selenium WebDriver 中的 window.external 函数

转载 作者:行者123 更新时间:2023-12-03 08:15:39 25 4
gpt4 key购买 nike

我想验证当单击页面上的某个项目时,是否通过 Selenium 调用外部 javascript 函数。 (我们已经有了 Jasmine 单元测试,用 spy 覆盖了这一点)。

所以我们的想法是拥有类似的东西

WebDriver.ExecuteJavascript<string>("window.called = false");
WebDriver.ExecuteJavascript<string>("window.external.MyFunction = function(){ window.called = true; }");
var element = WebDriver.GetElement(By.ClassName("awesomeElement"));
element.Click();

string value = WebDrider.ExecuteJavascript<string>("return window.called;");

这段代码的问题是我在第一行遇到异常。

这是异常(exception):

Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at System.Object.GetType()
at OpenQA.Selenium.Support.Extensions.WebDriverExtensions.ExecuteJavaScript[T](IWebDriver driver, String script, Object[] args)

请注意,WebDriver 不为 null,并且该方法正在抛出异常。我找不到任何文件说访问窗口函数/变量受到限制。有什么想法可能是错误的吗?

最佳答案

事实证明,这是由于未初始化 window.called 和 window.external 造成的。对于那些想要做类似事情的人来说,下面的代码片段可以解决这个问题。

IJavaScriptExecutor executor = WebDriver as IJavaScriptExecutor;
executor.ExecuteScript("window.called='false';");
executor.ExecuteScript("window.external={};");
executor.ExecuteScript("window.external.MyFunction=function()..;");

关于javascript - 访问 Selenium WebDriver 中的 window.external 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33959805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com