当我尝试使用下面的网址返回脚本值并返回空值时,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
答案 0 :(得分:1)
尝试从C#代码中获取序列化的字符串(通过执行JSON.stringify
),而不是从网页获取JSON对象:
var val = js.ExecuteScript("return JSON.stringify(window.__INITIAL_STATE__)");
在这种情况下,返回值为字符串。在这里,您可以使用以下方法反序列化它:
dynamic data = JsonConvert.DeserializeObject(val);