Javascript Can';t用量角器滑动打开离子离子离子菜单
我们有一个Ionic3 ion菜单(隐藏的左侧滑出菜单),我们必须向右滑动它才能显示出来。在Chrome上,只需点击鼠标即可轻松完成。但不能用量角器 这是离子菜单:Javascript Can';t用量角器滑动打开离子离子离子菜单,javascript,protractor,visual-studio-code,ionic3,ion-menu,Javascript,Protractor,Visual Studio Code,Ionic3,Ion Menu,我们有一个Ionic3 ion菜单(隐藏的左侧滑出菜单),我们必须向右滑动它才能显示出来。在Chrome上,只需点击鼠标即可轻松完成。但不能用量角器 这是离子菜单: <ion-menu id="menu1" role="navigation" side="left" type="overlay" class="menu-enabled show-menu" ng-reflect-content="[object Object]" ng-reflect-id="menu1">...&l
<ion-menu id="menu1" role="navigation" side="left" type="overlay" class="menu-enabled show-menu" ng-reflect-content="[object Object]" ng-reflect-id="menu1">...</ion-menu>
另外,我在这里通过@Boland尝试了这个解决方案,没有错误,但什么也没有发生。
奇怪的是,这样做之后,如果我再次尝试单击()元素,我就不会再看到“Failed:element not visible”(失败:元素不可见),甚至wait()都会说元素是可单击的(但菜单仍然不会滑动打开)
其他信息:这是我的spec.ts(TypeScript): 这是我的conf.js文件:
var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
allScriptsTimeout: 15000,
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:8100/',
framework: 'jasmine',
stackTrace: true,
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {},
includeStackTrace: true,
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
browser.ignoreSynchronization = true
browser.waitForAngularEnabled(false)
jasmine.getEnv().addReporter(new SpecReporter());
},
};
其他资料:
Ionic3 - CLI 3.13.2
Protractor - 5.1.2
Chrome - 62.0.3202.62 / 64 bits
Visual Studio Code - code in TypeScript
我错过什么了吗?我做错了吗?谢谢你的帮助。有线索吗
import { browser, element, by, ElementFinder, protractor} from 'protractor';
var fs = require('fs');
var tc_Name = 'TC - ';
var output = './Output/';
var EC = protractor.ExpectedConditions;
// elements
var element_title = element(by.css('ion-title.title.title-md'));
var element_close = element(by.id('ion-diagnostic-close'));
var element_sideMenu1 = element(by.id('menu1'));
var element_sideMenu2 = element(by.id('menu2'));
var element_drop = element(by.css('div.scroll-content'));
// Functions - Printscreen
function writeScreenShot(data, filename) {
var stream = fs.createWriteStream(filename);
stream.write(new Buffer(data, 'base64'));
stream.end();
}
// SetUp
afterEach(function() {
browser.takeScreenshot().then(function (png) {
writeScreenShot(png, output + tc_Name+'.png');
});
});
describe('App Home Screen', function() {
browser.get('');
browser.manage().window().maximize();
it('should have a title "Medicos pesquisados"', function() {
expect(browser.getTitle()).toContain('Medicos pesquisados');
tc_Name = 'TC 01';
});
it('should close if error', function() {
element_close.isPresent().then( present => {
if(present) {
element_close.click();
} else {
console.log('error not present');
}
})
tc_Name = 'TC 02';
})
it('should swipe open menu', function() {
browser.debugger();
// element_sideMenu1.click(); // Failed: element not visible
// browser.wait(EC.elementToBeClickable(element_sideMenu1), 10000); // Failed: Wait timed out after 10012ms
element_sideMenu1.getLocation().then(location => {
var startLocation = {
x: location.x,
y: location.y
}
var newLocation = {
x: startLocation.x + 500,
y: startLocation.y
};
console.log(startLocation);
console.log(newLocation);
browser.driver.touchActions().tapAndHold(startLocation).move(newLocation).perform();
})
element_sideMenu1.click(); // runs OK now, nothing happens
browser.wait(EC.elementToBeClickable(element_sideMenu1), 10000); // runs OK now, nothing happens
// It all runs OK, nothing happens
browser.driver.touchActions().tap(element_sideMenu1).perform();
browser.actions().mouseMove({x:0, y:500}).mouseDown().mouseMove({x:500, y:0}).mouseUp().perform();
browser.actions().mouseMove(element_sideMenu1).mouseDown().mouseMove({x:500, y:0}).perform();
browser.actions().mouseMove(element_sideMenu1).mouseDown().mouseMove(element_sideMenu2).perform();
tc_Name = 'TC 03';
browser.debugger();
})
});
var SpecReporter = require('jasmine-spec-reporter').SpecReporter;
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./e2e/**/*.e2e-spec.ts'
],
allScriptsTimeout: 15000,
capabilities: {
'browserName': 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:8100/',
framework: 'jasmine',
stackTrace: true,
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {},
includeStackTrace: true,
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
onPrepare: function() {
browser.ignoreSynchronization = true
browser.waitForAngularEnabled(false)
jasmine.getEnv().addReporter(new SpecReporter());
},
};
Ionic3 - CLI 3.13.2
Protractor - 5.1.2
Chrome - 62.0.3202.62 / 64 bits
Visual Studio Code - code in TypeScript