如何从无角度的登录页面转换到角度主页

问题描述:

我的公司正在开始使用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元素的任何提示?

+0

是URL后也提交变化?如果是这样,您可以等待url更改,然后启用同步并获取文本 – wswebcreation

+0

最终如何解决这个问题?我有完全相同的情况,我有它的主要工作,但你有什么“期望(元素(by.model('标题'....”我试图在我的角页面上做同样的事情后非 - 角色登录,我得到“超时等角度任务完成”或“没有找到这样的元素” –

+1

@ S.Huston抱歉的格式化...我没有browser.driver.findElement(by.name( 'submit'))。click()。然后(function(){browser.ignoreSynchronization = false; }); – rHenderson

首先,你需要调用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。 如果您需要自动化非角页,你有两个选择:

  1. 如果你还是想用量角器语法(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'); 
 
    }); 
 
});

  1. 如果你不想使用browser.ignoreSynchronization = true;,我个人比较喜欢,因为它可以给一些麻烦与未来版本的量角器,它是Angular和非Angular代码之间的更好的区别,您还可以使用“Vanilla WebDriver”browser-object,参见here
  2. 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'); 
     
        }); 
     
    });

开始=“2”>