使用Selenium和PhantomJS,我可以从运行在localhost上的服务器加载文件,如下所示:
_driver.Url = "http://localhost:52873/Home/Template";
_driver
是RemoteWebDriver
的实例,它连接到在端口上运行的PhantomJS实例(使用--webdriver=9134
启动)。我可以调用该HTML文件中定义的Javascript函数,如下所示:
var val = _driver.ExecuteScript("myFunction()");
但是,我想从本地文件系统而不是通过本地网络服务器加载它,所以我试过这样的事情:
_driver.Url = "file://c:/path/to/Home/template.html";
我没有错误,但是当我尝试执行html
文件中定义的脚本时,它不起作用。它会抛出InvalidOperationException
消息Can't find variable: myFunction
。但是,如果我将_driver
设置为ChromeDriver
的实例,我可以看到页面加载,一切都按预期工作,使用http
和file
协议。
我没有收到PhantomJS控制台窗口的其他信息,所以我真的不知道问题所在。我怀疑是因为某种原因PhantomJS只是没有加载页面。有什么想法吗?
此外,有没有办法使用.NET绑定selenium来访问控制台日志?我在我的html文件中添加了console.log("connected")
,以便在页面加载后立即运行,但在从file
或http
运行时,它不会回显到phantomJS控制台,所以没什么帮助。
答案 0 :(得分:0)
看起来你错过了路径URI中的额外/。
_driver.Url = "file:///c:/path/to/Home/template.html";