ChromeWebDriver IJavaScriptExecutor可以获取脚本值吗?

时间:2019-07-28 16:05:40

标签: c# selenium-webdriver selenium-chromedriver

当我尝试使用下面的网址返回脚本值并返回空值时,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

1 个答案:

答案 0 :(得分:1)

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

var val = js.ExecuteScript("return JSON.stringify(window.__INITIAL_STATE__)");

在这种情况下,返回值为字符串。在这里,您可以使用以下方法反序列化它:

dynamic data = JsonConvert.DeserializeObject(val);