如何从无角度的登录页面转换到角度主页
问题描述:
我的公司正在开始使用Angular构建我们所有的网站,并且在与Java Webdriver一起浏览这些新页面之后,我决定给量角器一个镜头。如何从无角度的登录页面转换到角度主页
登录页面不是Angular,但我想我通过设置ignoreSynchronizatyion = true
来解决这个问题。
我想要做的只是确认登录后我们网站主页标题的存在,但主页在Angular中。所以我尝试了几种不同的设置ignoreSynchronizatyion = false
,但我显然做错了什么。
describe('angular web navigation', function() {
it('should login and confirm title', function() {
browser.ignoreSynchronization = true;
browser.get('https://website.com/login')
browser.driver.findElement(by.name('username')).sendKeys("123456");
browser.driver.findElement(by.name('submit')).click;
browser.ignoreSynchronization = false;
expect(element(by.model('title')).getText()).
toEqual('Expected Title');
});
});
有关在非Angular页面上登录并确认存在Angular元素的任何提示?
答
首先,你需要调用click()
方法,替换:
browser.driver.findElement(by.name('submit')).click;
有:
browser.driver.findElement(by.name('submit')).click();
然后,如果开启同步功能不起作用这种方式,做在click()
承诺解决步骤:
browser.driver.findElement(by.name('submit')).click().then(function() {
browser.ignoreSynchronization = false;
});
答
使用browser.driver.findElement('..')
和browser.ignoreSynchronization = true
;是双倍的。请参阅docs here。 如果您需要自动化非角页,你有两个选择:
- 如果你还是想用量角器语法(
element(by.css('')
),你可以使用browser.ignoreSynchronization = true;
。这将禁止在非Angular页面上等待Angular。这导致在这个例子中
describe('angular web navigation', function() {
it('should login and confirm title', function() {
browser.ignoreSynchronization = true;
browser.get('https://website.com/login');
element(by.name('username')).sendKeys("123456");
element(by.name('submit')).click()
.then(function() {
browser.ignoreSynchronization = false;
});
expect(element(by.model('title')).getText())
.toEqual('Expected Title');
});
});
- 如果你不想使用
browser.ignoreSynchronization = true;
,我个人比较喜欢,因为它可以给一些麻烦与未来版本的量角器,它是Angular和非Angular代码之间的更好的区别,您还可以使用“Vanilla WebDriver”browser
-object,参见here
describe('angular web navigation', function() {
it('should login and confirm title', function() {
browser.driver.get('https://website.com/login');
browser.driver.findElement(by.name('username')).sendKeys("123456");
browser.driver.findElement(by.name('submit')).click();
expect(element(by.model('title')).getText())
.toEqual('Expected Title');
});
});
是URL后也提交变化?如果是这样,您可以等待url更改,然后启用同步并获取文本 – wswebcreation
最终如何解决这个问题?我有完全相同的情况,我有它的主要工作,但你有什么“期望(元素(by.model('标题'....”我试图在我的角页面上做同样的事情后非 - 角色登录,我得到“超时等角度任务完成”或“没有找到这样的元素” –
@ S.Huston抱歉的格式化...我没有browser.driver.findElement(by.name( 'submit'))。click()。然后(function(){browser.ignoreSynchronization = false; }); – rHenderson