我使用 Protractor 为我的应用程序编写端到端测试。我确信测试应该是正确的。但我看到错误:ElementNotVisibleError: element not visible
, Expected false to be true
, No element found using locator
不时。
测试代码如下:
describe "try test message center and it", ->
beforeEach ->
ptor = protractor.getInstance()
ptor.ignoreSynchronization = true
it "should login", ->
browser.driver.get homeURL
browser.manage().window().maximize()
element(`by`.xpath('//select/option[2]')).click()
element(`by`.css('.buttons input')).click()
it "should url is as expected", ->
ptor = protractor.getInstance()
expectedUrl = homeURL + '#/messages'
expect(ptor.getCurrentUrl()).toBe(expectedUrl)
it "should create and send new message", ->
ptor = protractor.getInstance()
ptor.sleep 1000
element(`by`.css('button.btn-primary')).click()
element(`by`.model('uiData.createRecipient')).sendKeys 'James'
ptor.sleep 1000
element.all(`by`.repeater('match in matches')).get(1).click()
element(`by`.model('uiData.createSubject')).sendKeys 'subject 2'
element(`by`.model('uiData.createText')).sendKeys 'body of message'
ptor.sleep 1000
element(`by`.css('div.form-group a.btn-primary')).click()
ptor.sleep 1000
expect(element(`by`.css('.popupBox')).isPresent()).toBe(true)
it "should check new message", ->
ptor = protractor.getInstance()
ptor.get('#/messages?folder=1')
ptor.driver.navigate().refresh()
ptor.sleep 5000
element(`by`.model('uiData.to')).sendKeys 'k'
ptor.sleep 3000
element.all(`by`.cssContainingText('span.grid-col-to', 'James')).last().click()
ptor.sleep 1000
expect(element(`by`.xpath('//*[text()[contains(.,"body of message")]]')).isPresent()).toBe(true)
element(`by`.xpath('//*[text()[contains(.,"Own it!")]]')).click()
ptor.sleep 1000
expect(element(`by`.cssContainingText('span', 'Owned by')).isPresent()).toBe(true)
element(`by`.xpath('//*[text()[contains(.,"Disown it")]]')).click()
ptor.sleep 1000
expect(element(`by`.cssContainingText('span', 'Disowned by')).isPresent()).toBe(true)
Protractor v1.0.0, Grunt Protractor 转轮 v1.0.1 节点 v0.10.28, NPM v1.4.9, Chrome 驱动程序 v2.10, Selenium 服务器 v2.42.2。 Jenkins 在 Windows Server 2008 R2 下运行的测试
它会是什么?谢谢。
最佳答案
两个可能有用的提示。
- 在你的 protractor.conf.js 中设置窗口大小,这样窗口的大小总是一样的,并且应该总是显示相同的元素。
- 将 html 与屏幕截图报告器结合使用,这样您就可以在任何案例失败时看到屏幕上的内容。
这两个技巧甚至适用于 phantomjs。 将以下内容添加到 protractor.conf.js
onPrepare: function () {
// The require statement must be down here, since jasmine-reporters
// needs jasmine to be in the global and protractor does not guarantee
// this until inside the onPrepare function.
var browserName,
platform,
window = browser.manage().window();
require('jasmine-reporters');
require('protractor-html-screenshot-reporter');
jasmine.getEnv().addReporter(new jasmine.ConsoleReporter());
// create a html reporter with screenshots
jasmine.getEnv().addReporter(new HtmlReporter({
baseDirectory: 'reports/screenshots' ,
takeScreenShotsOnlyForFailedSpecs: true
}));
// set the window size
browser.getCapabilities().then(function (capabilities) {
browserName = capabilities.caps_.browserName;
platform = capabilities.caps_.platform;
}
).then(function getCurrentWindowSize() {
return window.getSize();
}
).then(function setWindowSize(dimensions) {
var windowWidth = 1980,
windowHeight = 1200;
return window.setSize(windowWidth, windowHeight);
}
).then(function getUpdatedWindowSize() {
return window.getSize();
}
).then(function showWindowSize(dimensions) {
console.log('Browser:', browserName, 'on', platform, 'at', dimensions.width + 'x' + dimensions.height);
console.log('Running e2e tests...');
}
);
},
关于javascript - Protractor 测试有时会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997442/