C# ChromeWebDriver IJavaScriptExecutor是否要获取脚本值?

C# ChromeWebDriver IJavaScriptExecutor是否要获取脚本值?,c#,selenium-webdriver,selenium-chromedriver,C#,Selenium Webdriver,Selenium Chromedriver,当我尝试使用下面的url返回脚本值时,ChromeDriver v75.0.3770.140有一个奇怪的问题,它返回空值 var driver = new ChromeDriver(); driver.Navigate().GoToUrl("https://www.6pm.com/p/adidas-team-issue-ii-sackpack-white-jersey-black-clear-lilac-purple/product/9045515/color/749092");

当我尝试使用下面的url返回脚本值时,ChromeDriver v75.0.3770.140有一个奇怪的问题,它返回空值

   var driver = new ChromeDriver();
    driver.Navigate().GoToUrl("https://www.6pm.com/p/adidas-team-issue-ii-sackpack-white-jersey-black-clear-lilac-purple/product/9045515/color/749092");

    IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
    var val2 = js.ExecuteScript("return window.zfcSessionId"); // work fine
    var val = js.ExecuteScript("return window.__INITIAL_STATE__;"); // nullreference
发件人:

ExecuteScript(String,Object[])方法在 当前选定帧或窗口的上下文。这意味着 “文件”将指当前文件。如果脚本有 返回值,则将采取以下步骤:

  • 对于HTML元素,此方法返回
    IWebElement
  • 对于数字,返回一个
    Int64
  • 对于布尔值,将返回一个
    boolean
  • 对于所有其他情况,将返回一个字符串。对于数组,我们检查第一个元素,并尝试按照规则返回该类型的
    列表
    在上面不支持嵌套列表。如果该值为null或不存在
    没有返回值,返回null
在您的例子中,
\uuu INITIAL\u STATE\uu
是一个不满足上述任何返回类型的
JSON
对象

不要从网页获取JSON对象,而是尝试获取C代码中的序列化字符串(通过执行
JSON.stringify
):

在本例中,返回值为string。从这里,您可以使用以下命令对其进行反序列化:

dynamic data = JsonConvert.DeserializeObject(val);

在第二个js.ExecuteScript行字符串的末尾有分号有关系吗?@BrandenHuggins没有,输入仍然是相同的,可以。然而,我仍然不知道为什么Json对象不起作用,因为我已经使用它好几个月了。
dynamic data = JsonConvert.DeserializeObject(val);