我正在使用casperjs使用localstorage对backbonejs应用程序进行一些测试.
我的问题是,在使用casperjs进行测试时,我无法清除localstorage.
我一直试图localStorage.clear();在我的casper文件的开头使用但没有清除.
我正在尝试使用行为设置测试Web应用程序,该行为基于行为和分裂运行 - 后者又使用Selenium来驱动PhantomJS.所有这些都在VirtualBox提供的运行CentOS 6.4的Vagrant盒子里面.我安装了Selenium pip,我从Nux Dextop repo 安装了PhantomJS .
试图运行我的测试冻结Behave 30秒,然后提出:
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to GhostDriver'
Run Code Online (Sandbox Code Playgroud)
我想我已经把它钉到了无法打开套接字的地方,事实上,当我尝试从Python交互式shell中执行此操作时,我根本无法打开任何套接字到localhost.如何让我的测试运行?
我正在用PhantomJS运行Karma来运行一些单元测试.
在我的单元测试中,有一些测试会进行一些日期比较,这些测试在本地运行时都会通过.
我们的构建服务器位于不同的时区,由于时区不同,日期测试失败.
我查看了phantomjs选项,并没有看到任何关于区域设置或时区的选项.是否可以将phantomJs配置到每台计算机上的同一时区,即使它们是不同的时区?
我最近开始学习CasperJS,我正在尝试登录YouTube.这是我目前的代码:
// XPathSignInButton is predefined
var Username = 'user123';
var Password = 'pass123';
casper.waitForSelector(xPathSignInButton, function() {
this.thenEvaluate(function() {
$('#Email').val(Username);
$('#Passwd').val(Password);
});
});
Run Code Online (Sandbox Code Playgroud)
上面的代码不会操作输入字段(不会在其中写入),但是如果我替换thenEvaluate()为this.fillSelectors(),则会正常访问变量并且一切正常:
// XPathSignInButton is predefined
// signInFormSelector is predefined
casper.waitForSelector(xPathSignInButton, function() {
this.fillSelectors(signInFormSelector, {
'input[name="Email"]': Username,
'input[name="Passwd"]': Password
});
});
Run Code Online (Sandbox Code Playgroud)
我首先想到我如何调用jQuery有一个问题,但当我用实际的字符串替换变量时:$('#Email').val('user123');和$('#Email').val('pass123');- 它就像一个魅力.
我的问题是如何从thenEvaluate()函数中访问变量.它可能吗?
我一直在使用phantomjs在服务器端dom环境中为我做一些繁重的工作.直到现在我一直把数据结构放在内存中(即对它们没什么特别的),一切都很好.但最近在一些用例中我开始遇到以下问题:
这迫使我寻找一个用于幻像的数据库解决方案,但在决定解决方案时我又遇到了问题:
谁能引导我找到满意的解决方案?
注意:我几乎已经决定,sqlite但从幻影连接到它仍然是一个问题.Nodejs提供sqlite3节点模块,我正在尝试browserify使用幻像.
注意注意: Browserify没有用!回到地面零!:-(
Thanx提前!
我正在尝试使用Karma和PhantomJS来测试我的应用程序,我收到错误:
PhantomJS 1.9.8 (Windows 7) Controller: SongsCtrl should attach a list of awesomeThings to the scope FAILED
ReferenceError: Can't find variable: Audio
Run Code Online (Sandbox Code Playgroud)
我的AngularJS服务中的违规行是:
var audio = new Audio();
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中运行它时,当然可以正常运行,但由于它是原生HTML5元素,因此PhantomJS似乎无法识别它.
有谁知道我怎么解决这个问题?
如何为Java PhantomJSDriver指定命令行参数?例如,我想设置--ignore-ssl-errors=yes我运行的脚本.
我正在使用PhantomJS + d3在服务器上呈现SVG.我能够在内部使用d3创建的SVG返回整个页面的HTML,但是如果我尝试只返回SVG,那么我会回来null.
var page = require('webpage').create();
page.content = '<html><body></body></html>';
page.includeJs('http://d3js.org/d3.v3.min.js', function() {
var html = page.evaluate(function() {
var body = d3.select('body');
var svg = body.append('svg');
svg.append('rect');
svg.append('circle');
return body.html();
});
console.log(html);
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
退货<script src="http://d3js.org/d3.v3.min.js"></script><svg><rect></rect><circle></circle></svg>.
但是,如果我更改return body.html()到return svg.html(),null被返回.
我正在使用PhantomJS 1.9.8和d3.v3.js. 关于为什么我不能选择svg的任何想法?
在C#控制台应用程序中使用Selenium C#PhantomJSDriver时,如何设置http referer标头?
我正在使用PhantomJSDriver和我无法控制的代理.
PhantomJSDriverService service = PhantomJSDriverService.CreateDefaultService();
service.AddArgument("--proxy=123.456.78.910:80");
service.AddArgument("--proxy-auth=myproxyuid:myproxypwd");
IWebDriver driver = new PhantomJSDriver(service);
driver.Navigate().GoToUrl("http://www.testsite.com/product/123/");
Run Code Online (Sandbox Code Playgroud)
但是,正在测试的Web应用程序会对请求中的HTTP Referer值执行验证.
我可以使用什么方法在PhantomJSDriver请求中注入HTTP Referer?
我有一个Selenium-Python适用于Firefox和的脚本Chrome,但有时会引发以下异常,如果使用PhantomJS:
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.phant
omjs.service.Service object at 0x000000000439FE80>>
Traceback (most recent call last):
File "C:\Python34\Lib\site-packages\selenium\webdriver\common\service.py", line 151, in __del__
self.stop()
File "C:\Python34\Lib\site-packages\selenium\webdriver\common\service.py", line 127, in stop
self.send_remote_shutdown_command()
File "C:\Python34\Lib\site-packages\selenium\webdriver\phantomjs\service.py", line 68, in send_remote_shutdown_command
os.remove(self._cookie_temp_file)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\OB865~1.LUC\\AppData\\Local\\Temp\\tmpe6zrcjem'
Run Code Online (Sandbox Code Playgroud)
脚本的要点是遍历文件列表:为每个文件启动浏览器会话,发送文件进行分析,获取并保存结果,关闭浏览器.在大约50%的情况下会话重新打开(在driver.close()和之间driver = webdriverPhantomJS())下一次迭代时出现问题...
关于什么可能导致这个问题及其如何解决的任何假设?
PS如果需要任何其他信息,请告诉我
phantomjs ×10
selenium ×4
casperjs ×2
javascript ×2
node.js ×2
angularjs ×1
audio ×1
browserify ×1
c# ×1
d3.js ×1
html5 ×1
http-referer ×1
java ×1
karma-runner ×1
proxy ×1
python ×1
scope ×1
sqlite ×1
vagrant ×1