我可以在互联网上找到的每个量角器示例似乎都使用browser.get
和网址。
browser.get('http://localhost:8000');
我想使用Selenium简单导航到file://
路径,这样我就不需要运行本地Web服务器来执行测试。我只需要一个简单的HTML页面和一些资产。
但这似乎不起作用。
browser.get('file:///Users/myusername/dev/mpproject/spec/support/index.html');
当我将该URI粘贴到浏览器窗口时,我会得到一个HTML页面。当我尝试用量角器打开它时,我会暂停。
如何使用量角器在此页面上运行测试?理想的答案将使用myproject
根目录的相对文件路径。
答案 0 :(得分:15)
我发布的解决方案found in here帮我运行了带有文件协议的Protractor。
默认情况下,量角器使用
data:text/html,<html></html>
作为resetUrl
,但不允许location.replace
到data:
协议的file:
(我们会这样做)获取&#34;不允许本地资源&#34;错误),因此我们将resetUrl
替换为file:
协议的<{1}}:
exports.config = {
// ...
baseUrl: 'file:///absolute/path/to/your/project/index.html',
onPrepare: function() {
// By default, Protractor use data:text/html,<html></html> as resetUrl, but
// location.replace from the data: to the file: protocol is not allowed
// (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one
// with the file: protocol (this particular one will open system's root folder)
browser.resetUrl = 'file://';
}
// ...
};
如果要运行项目文件夹的相对路径,那么可以使用Node.js工具,因为Protractor在Node.js环境中运行。例如,__dirname
将返回保存Protractor配置文件的目录的绝对路径。结果使用:
exports.config = {
// ...
baseUrl: 'file://' + __dirname + '/spec/support/index.html'
// ...
};
此外,如果您的应用程序对file:
不允许的某些端点执行XHR请求,则可能必须使用自定义标志运行测试浏览器。就我而言,它是Chrome:
exports.config = {
// ...
capabilities: {
browserName: 'chrome',
chromeOptions: {
// --allow-file-access-from-files - allow XHR from file://
args: ['allow-file-access-from-files']
}
}
// ...
}
答案 1 :(得分:5)
我遇到了同样的错误并通过应用Michael Radionov修复但修复了baseUrl来修复。这是我的设置:
protractor.config.js:
exports.config = {
capabilities: {
browserName: 'chrome'
},
specs: [
'*.js'
],
onPrepare: function() {
// By default, Protractor use data:text/html,<html></html> as resetUrl, but
// location.replace from the data: to the file: protocol is not allowed
// (we'll get ‘not allowed local resource’ error), so we replace resetUrl with one
// with the file: protocol (this particular one will open system's root folder)
browser.ignoreSynchronization = true;
browser.waitForAngular();
browser.sleep(500);
browser.resetUrl = 'file:///';
}
};
e2etest.js:
'use strict';
describe("Buttons' tests are started", function() {
it('Should retrieve 20 records into table', function() {
browser.get('file:///C:/Users/path_to_file/index.html');
/* Test codes here */
});
});
答案 2 :(得分:1)
错误日志是什么?
这可能与“加载”有关。角。为此你可以尝试 browser.driver.ignoreSynchronization = true;
错误日志肯定有助于理解问题。
答案 3 :(得分:-4)
我认为有错字错误。在&#34; get&#34;您应该在双引号&#34;&#34;。
中包含URL尝试使用如下双引号:
WebDriver driver=new FirefoxDriver();
driver.get('file:///E:/Programming%20Samples/HTML%20Samples/First%20Program.html');