C# ChromeWebDriver IJavaScriptExecutor是否要获取脚本值?
当我尝试使用下面的url返回脚本值时,ChromeDriver v75.0.3770.140有一个奇怪的问题,它返回空值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");
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);